#P5710. 【深基3.例2】数的性质

【深基3.例2】数的性质

【深基3.例2】数的性质

题目来源

洛谷 P5710

题目描述

一些整数可能拥有以下的性质:

  • 性质 1:是偶数;
  • 性质 2:大于 44 且不大于 1212。

小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;小 B 喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 xx,请问他们是否喜欢这个整数?

输入格式

输入一个整数 x(0≤x≤1000)x(0\le x \le 1000)

输出格式

输出这 44 个人是否喜欢这个数字,如果喜欢则输出 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。