#P5710. 【深基3.例2】数的性质
【深基3.例2】数的性质
【深基3.例2】数的性质
题目来源
洛谷 P5710
题目描述
一些整数可能拥有以下的性质:
- 性质 1:是偶数;
- 性质 2:大于 且不大于 。
小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;小 B 喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 ,请问他们是否喜欢这个整数?
输入格式
输入一个整数
输出格式
输出这 个人是否喜欢这个数字,如果喜欢则输出 1,否则输出 0,用空格分隔。输出顺序为:小 A、Uim、小 B、正妹。
样例输入
12
样例输出
1 1 0 0
提示
一、bool 是一个真正的类型
bool flag = true; // 真
bool other = false; // 假
printf("%d\n", flag); // 1
printf("%d\n", other); // 0
bool 只有两个值。用 %d 输出时打印 1 或 0,正好符合很多题「输出 1 表示满足,0 表示不满足」的要求,不需要写 if 去转。
二、把条件的结果直接存起来
int x = 12;
bool even = (x % 2 == 0); // true
bool big = (x > 10); // true
bool both = even && big; // true
printf("%d %d %d\n", even, big, both); // 1 1 1
这样做的好处:每个性质单独一行,含义清楚;后面组合时直接拿变量用,不用重复写条件。
三、注意赋值时的括号
bool even = x % 2 == 0; // 可以,== 优先级高于 =
bool even = (x % 2 == 0); // 更清楚,推荐
四、常见错误
-
用
%s打印 bool(会崩或乱码),要用%d; -
以为
bool能存别的值(存 5 会变成 1); -
把「输出 1/0」写成输出
true/false字符串。 -
先把「是偶数」和「在 (4,12] 内」分别算成两个 bool。
-
四个人分别对应:都成立、至少一个成立、恰好一个成立、都不成立。
-
按题面顺序输出四个 0/1。
自查:用 12 验证:偶 + 在范围内 →
1 1 0 0。