P1469找筷子(数论)

tech2023-02-24  98

题目描述

分析

题目限制空间为4MB,开一个1e7的数组就差不多了 用异或。 我们考虑异或的两个小小的性质:

kk 个相同的数的异或和,当 kk 为奇数时,结果是这个数本身,否则结果是 0。任何数与 0 的异或值是它本身。

然后注意到题目。题目需要求 nn 个数中出现奇数次的那个数,且保证这个数存在且只有一个。于是我们根据上面两个性质得出,答案就是这 nn 个数的异或和。

代码

#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; const int maxn = 1e7+50; int n,m,ans,t; int main(){ //freopen("a.txt","r",stdin); scanf("%d",&n); for(int i = 0;i<n;i++){ scanf("%d",&t); ans ^= t; } cout<<ans<<endl; return 0; }
最新回复(0)