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


这道题乍一看逻辑判断条件十分复杂,但是我们有简便的方法,规避复杂逻辑情况的判断

我们可以通过一个bool类型的值来存储当前逻辑判断的条件,然后对这些bool类型的值进行逻辑与和逻辑或操作,就可以规避复杂判断逻辑的操作。

具体实现代码如下:

    // 判断性质1:是偶数
    bool isEven = (x % 2 == 0);
    // 判断性质2:大于 4 且不大于 12
    bool isInRange = (x > 4 && x <= 12);

对这四个人的判断的具体代码如下:

    // 判断小 A 的喜好条件
    bool likesA = isEven && isInRange;
    // 判断 Uim 的喜好条件
    bool likesUim = isEven || isInRange;
    // 判断小 B 的喜好条件
    bool likesB = (isEven && !isInRange) || (!isEven && isInRange);
    // 判断正妹的喜好条件
    bool likesGirl = !isEven && !isInRange;

具体可以编译运行的代码如下:

#include <iostream>
using namespace std;
int main() {
    int x;
    cin >> x;

    // 判断性质1:是偶数
    bool isEven = (x % 2 == 0);
    // 判断性质2:大于 4 且不大于 12
    bool isInRange = (x > 4 && x <= 12);

    // 判断小 A 的喜好条件
    bool likesA = isEven && isInRange;
    // 判断 Uim 的喜好条件
    bool likesUim = isEven || isInRange;
    // 判断小 B 的喜好条件
    bool likesB = (isEven && !isInRange) || (!isEven && isInRange);
    // 判断正妹的喜好条件
    bool likesGirl = !isEven && !isInRange;

    // 输出结果
   cout << (likesA ? 1 : 0) << " "
        << (likesUim ? 1 : 0) << " "
        << (likesB ? 1 : 0) << " "
        << (likesGirl ? 1 : 0) <<endl;

    return 0;
}

这道题我想告诉大家的是,合理利用C++中的bool类型的值,可以帮助我们规避复杂的逻辑判断。

posted @ 2024-07-09 09:53  Tomorrowland_D  阅读(133)  评论(0)    收藏  举报