P8845 题解

· · 题解

题链:P8845 [传智杯 #4 初赛] 小卡和质数

题意

给你 xy,问第 x 个质数和第 y 个质数的异或值是否为 1

思路

怎么样的两个数异或值为 1 呢?显然是二进制下只有末尾不同的数,要满足这个条件,需要两数奇偶性不同(思考这个条件是因为考虑到质数特殊的奇偶性质),则两个质数为一奇一偶。

偶数中只有 2 是质数,而易知在其它质数中,只有 32 的异或值为 1。最终得到:两个质数只能是 32

upd(2025.4.1):为什么只有 3 呢,因为 (10)_2=2,而如果另一个数二进制下有多于 2 位,那前面的位异或出来就已经大于 1 了。然后应该就可以理解了吧,至于前面”二进制下只有末尾不同的数“也是一样的道理。写这篇题解的时候我可能也不是很知道为什么只有 3

### code ``` #include<bits/stdc++.h> using namespace std; int t,a,b; int main(){ cin>>t; while(t--){ cin>>a>>b; if((a==2&&b==1)||(a==1&&b==2)) puts("Yes"); else puts("No"); } } ```