「金」初心如金 思维

「金」初心如金

https://ac.nowcoder.com/acm/problem/53677

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

题意

每次给出一个奇数,判断其是否是质数,如果是的话,答案为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;
}
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

2025-12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务