2 条题解
-
-1huhe (huangjiasheng) LV 9 @ 2022-1-8 18:58:25
/***************************************** Node: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 4000500; const int INF = 0x3f3f3f3f; int a[N]; inline int read() { int s=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ s=s*10+ch-'0'; ch=getchar(); } return s*f; } inline void write(int x) { if(x<0){ putchar('-'); x=-x; } if(x>9) write(x/10); putchar(x%10+'0'); } int main() { int n,ans; scanf("%d",&n); for(int i=0;i<n;i++) { cin>>a[i]; ans^=a[i]; } int pos=0; for(int i=63;i>=0;i--) { if(ans&(1<<i)) { pos=(1<<i); } continue; } LL ans1=0; LL ans2=0; for(int i=0;i<n;i++) { if(a[i]&pos) { ans1^=a[i]; } else { ans2^=a[i]; } } if(ans1>ans2) { swap(ans1,ans2); } cout<<ans1<<" "<<ans2; return 0; }
-
-12021-10-24 20:29:52@
#include<iostream> using namespace std; int a[4000500]; int main(){ int n,ans; scanf("%d",&n); for(int i=0;i<n;i++){ cin>>a[i]; ans^=a[i]; } int pos=0; for(int i=63;i>=0;i--){ if(ans&(1<<i)){ pos=(1<<i); } continue; } long long ans1=0,ans2=0; for(int i=0;i<n;i++){ if(a[i]&pos){ ans1^=a[i]; }else{ ans2^=a[i]; } } if(ans1>ans2){ swap(ans1,ans2); } cout<<ans1<<" "<<ans2; return 0; }
- 1
信息
- ID
- 1223
- 时间
- 200ms
- 内存
- 64MiB
- 难度
- 8
- 标签
- 递交数
- 336
- 已通过
- 57
- 上传者