先写出两个布尔性质,再用 and、or、异或和 not 得到四个输出。
OJ: luogu
题目 ID: P5710
难度:入门
标签:python入门条件判断布尔表达式
日期: 2026-07-15 18:02
题意
整数有两个性质:
- 性质
a:是偶数; - 性质
b:大于4且不大于12。
按顺序输出四个人是否喜欢这个数:
- 小 A:两个性质同时满足;
- Uim:至少满足一个;
- 小 B:刚好满足一个;
- 正妹:两个都不满足。
思路
先把两个性质写成布尔变量:
python
a = x % 2 == 0
b = 4 < x <= 12然后四个答案分别是:
a and ba or ba != bnot (a or b)
最后把布尔值用 int(...) 转成 1 或 0 输出。
brute.py 不适合这题,因为这是一道布尔表达式练习题,没有算法优化过程。
Python 知识
x % 2 == 0判断偶数。- Python 支持链式比较:
4 < x <= 12。 and、or、not分别表示与、或、非。a != b对布尔值来说相当于“刚好一个为真”。int(True) == 1,int(False) == 0。
对应的本地 Python 笔记:
/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:整数输入和输出。/home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:空格分隔输出。/home/rainboy/mycode/hugo-blog/content/program_language/python/math_tools.md:整数和取模相关基础。
代码
python
x = int(input())
a = x % 2 == 0
b = 4 < x <= 12
print(int(a and b), int(a or b), int(a != b), int(not (a or b)), end="")cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-27 00:00
* update_at: 2026-07-27 00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
int x; // 待判断的整数
cin >> x;
// 两个布尔性质
int a = (x % 2 == 0); // 性质 a:是偶数
int b = (x > 4 && x <= 12); // 性质 b:大于 4 且不大于 12
// 四个布尔运算结果,用 1/0 输出
cout << (a && b) << " " << (a || b) << " " << (a != b) << " " << !(a || b) << endl;
return 0;
}Pythonic 写法
布尔运算直出:
python
x = int(input())
even, mid = x % 2 == 0, 4 < x <= 12
print(int(even and mid), int(even or mid), int(even ^ mid), int(not even and not mid))复杂度
只做常数次判断,时间复杂度
总结
布尔题不要急着写嵌套 if。先把基本性质命名成变量,再组合 and、or、not,代码会更接近题意。