「金」初心如金 思维

题目链接

题目描述

帕秋莉掌握了一种金属性魔法

就在她掌握这种魔法的一瞬间,魔导书中飞出了一个虚影

“如果你想继续接受我的传承,请完成我给你的试炼……”

帕秋莉毫不犹豫地接受了试炼,却发现她并不会试炼的内容,于是请你来帮助她

试炼的内容如下:

每次给出一个奇数,判断其是否是质数,如果是的话,答案为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;
}
发布了143 篇原创文章 · 获赞 11 · 访问量 8210

猜你喜欢

转载自blog.csdn.net/weixin_43701790/article/details/103230393
今日推荐