题目描述
帕秋莉掌握了一种金属性魔法
就在她掌握这种魔法的一瞬间,魔导书中飞出了一个虚影
“如果你想继续接受我的传承,请完成我给你的试炼……”
帕秋莉毫不犹豫地接受了试炼,却发现她并不会试炼的内容,于是请你来帮助她
试炼的内容如下:
每次给出一个奇数,判断其是否是质数,如果是的话,答案为1,否则答案为0
但试炼显然不会这么简单,除第一次以外,后来给出的所有数字均不是真正的数据,而是数据与lastans(上一次询问的答案,初始值为0)的异或值
如第一次给出奇数11,是质数,答案为1,下一次的奇数本该是13,但由于需要异或上一次的答案(1),因此给出的数据为12
由于帕秋莉还是想锻炼一下自己,所以最后一次的询问她要自己计算,就不用你帮忙输出啦!
输入描述:
两行,第一行一个整数n (n>1),表示共有n 次询问 接下来的n行,每行一个数x,表示询问的数字 除第一个外,后面给出的数字均异或了上一次询问的答案
输出描述:
n-1行,每行一个数字0或1,代表需要你输出的答案
输入
4 11 12 14 21
输出
1 1 0
题目描述很简单,题解也很简单,但是我为啥不写呢(比赛的时候卡题+跟榜跟错了)
首先题目明确说明每个数都是奇数,判断当前数字是否是质数,得到 0 或 1,后面的数字都要异或前面数字得到的 0 或 1 的值,如果当前数字是偶数,说明异或了1,也就是说前面的数字质数判定是1,如果是奇数, 说明奇数异或了0,前面的数字素数判定值为0
OVER
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
int x;
scanf("%d", &x);
for (int i = 2; i <= n; i++){
scanf("%d", &x);
if(x & 1){
puts("0");
}
else puts("1");
}
return 0;
}