逻辑题:谁是卸载按钮——cpp代码

这篇博客通过一个简单的逻辑题目展示了如何使用代码来解决找寻卸载按钮的问题。作者提到,这是一道常见的逻辑题,即便是小学三年级的学生也可能遇到。他们提供了C++代码来枚举可能的卸载按钮,并验证哪些按钮说的是真话。最终得出结论,D按钮说真话,C是卸载按钮。博客内容涉及基础逻辑推理和编程思维。
摘要由CSDN通过智能技术生成

这年头,小学数学没学好连卸载软件的资格都没有。

下面只有一个按钮说了真话。那么谁是卸载按钮?
A:是B!
B:是D!
C:不是我!
D:B撒谎!

在这里插入图片描述

非常常见的逻辑题了,小学3年级就开始见 。现在用代码来解决它。首先有2种实现思路,一种是枚举说真话的按钮,另一种是枚举卸载按钮(合理假设:卸载按钮有且只有1个)。前者貌似比后者难,因此我们枚举卸载按钮,并验证说真话的按钮个数是否等于1。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define rep(i,a,b) for(int i = (a);i <= (b);++i)
#define re_(i,a,b) for(int i = (a);i < (b);++i)
#define dwn(i,a,b) for(int i = (a);i >= (b);--i)

const int SZ = 1e3 + 3;

template<typename Type>inline void read(Type &xx){
    Type f = 1;char ch;xx = 0;
    for(ch = getchar();ch < '0' || ch > '9';ch = getchar()) if(ch == '-') f = -1;
    for(;ch >= '0' && ch <= '9';ch = getchar()) xx = xx * 10 + ch - '0';
    xx *= f;
}

//first=说真话的按钮,second=卸载按钮
pair<char,char> solve(){
    re_(i,0,3){
        int a[4] = {i == 1,i == 3,i != 2,i != 3};
        if(accumulate(a,a+4,0) == 1){
            return {max_element(a,a+4)-a+'A',i+'A'};
        }
    }
    return {'E','E'};
}

int main(int argc, char** argv) {
    pair<char,char> res = solve();
    cout << res.first << " " << res.second << endl;
    return 0;
}

结果:D说真话,C是卸载按钮。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值