簡單異或 && 洛谷 P1469 找筷子 && 洛谷 P3908 數列之異或
阿新 • • 發佈:2020-11-22
異或運算
相同為0,不同為1。
1^1=0,0^1=1,1^0=1,0^0=0
P1469 找筷子
很有趣的一道題。因為空間有限制,所以我們每讀入一個數就與ans異或一下,因為相同會變成0,所以剩下的即是答案。
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int n,a,ans; 5 int main(){ 6 cin>>n; 7 for(int i=1;i<=n;i++){ 8 scanf("%d",&a); 9 ans^=a;10 } 11 cout<<ans; 12 return 0; 13 }
P3908 數列之異或
發現這樣一個規律,0^1=1,2^3=1,3^4=1,所以每四個就抵消成0,所以看n+1(因為加上0)除以4的餘數即可。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 long long a; 6 int main(){ 7 cin>>a; 8 if((a+1)%4==0){ 9 cout<<0; 10 return 0; 11 } 12 if((a+1)%4==1){ 13 cout<<a; 14 return 0; 15 } 16 if((a+1)%4==2){ 17 cout<<1; 18 return 0; 19 } 20 if((a+1)%4==3){ 21 long long aaa=a^1; 22 cout<<aaa; 23 //或者直接 cout<<a+1; 24 return 0; 25 } 26 return 0; 27 }