1736. 猜一猜

对二进制位 a,b ,进行或运算和异或运算的结果如下表所示:

a,b异或
0,000
0,111
1,011
1,110

对每个二进制位都是 0,1 随机来说。如果是或运算(代码 A ),那么每个位应当有 75\% 概率为 1 ,否则应当有 50\% 概率是 1 。因为有 10^4 个随机数,所以随机结果符合统计分布规律(即频率趋于概率)。那么任取一位,判断其 1 出现的概率即可。比如可以取最末尾。

本题有非常多的解法。欢迎在评论区分享你的解法。

参考代码:

#include <bits/stdc++.h> using namespace std; #define sc(x) scanf("%lld", &x) typedef long long ll; ll p; signed main() { for (ll i = 0, x; i < 10000; ++i) { sc(x); p += x & 1; } printf("%c", abs(p - 7500) < abs(p - 5000) ? 'A' : 'B'); return 0; }