本题是一道非常有趣的思维题。

题意

每次给出一个奇数,判断其是否是质数,如果是的话,答案为1,否则答案为0。但是除了第一个数据以外,每个数据都是异或了之前的答案(0/1)的。最后一个数据不用判断。

思路

因为每次给出的都是奇数,所以只需要逆向思维,检索最后一个位(bit)即可。

也就是看它是奇数还是偶数。

为什么可以这样呢?对于第二个及以后的数,因为每次给出的都是奇数,如果现在的数据偶数,那么就说明最后一位xor(异或)了1,奇数则说明最后一位xor了0。

所以可以用下一个数据逆向推导出上一个数据的答案。

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#define sc(x) scanf("%lld", &(x))
using namespace std;
typedef long long ll;
int main() {
    ll T,a;
    sc(T);
    --T,sc(a);
    while(T--){
        sc(a);
        if(a&1)puts("0");
        else puts("1");
    }
    return 0;
}