C++ / ACM 自学笔记 · v5.0

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)\)。

返回本章题解索引 · 返回全部题号索引

查阅笔记正文与全部题解 · Ctrl / ⌘ K