P5710 数的性质
对应章节:序言 → 建议的自学顺序与练习;一、C++ 语法基础 → (四) 运算符与位运算;三、解题方法论:从题意到代码 → (五) 从文字规则整理优先级。
(一) 任务与输出目标
根据“是偶数”和“在 4 到 12 之间”两项性质,输出同时满足、至少满足一项、恰好满足一项和都不满足的判断。
(二) 建模与推导
先分别求出两个布尔值 p、q,再组合它们。两项都成立对应 p&&q;至少一项成立对应 p||q;恰好一项成立表示二者不同,对应 p!=q;都不成立对应 !p&&!q。这样每个输出都有独立、明确的含义。
(三) 手算与过程
x=6 时 p、q 都为 true,输出 1 1 0 0;x=4 时只有偶数性质成立,输出 0 1 1 0。
(四) 带注释实现
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
void solve() {
int x;
cin >> x;
bool p = (x % 2 == 0); // 第一项性质:偶数。
bool q = (4 < x && x <= 12); // 第二项性质:大于 4 且不超过 12。
cout << (p && q) << ' ' << (p || q) << ' ' << (p != q) << ' ' << (!p && !q) << '\n';
}
signed main() {
ios::sync_with_stdio(false); // 关闭同步,使用 cin 与 cout 完成输入输出。
cin.tie(0), cout.tie(0);
int T = 1; // 本题读入一组数据。
// cin >> T; // 题目给出测试组数时开启,并在 solve 中处理一组。
while (T--)
solve();
}(五) 复杂度
时间 \(O(1)\),额外空间 \(O(1)\)。