3 条题解

  • 0
    @ 2026-4-5 20:33:39
    #include<iostream>
    #include<cmath>
    using namespace std;
    int a[1000005];
    int main(){
    	int n,ans;
    	cin>>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;
    }
    • -3
      @ 2021-10-24 20:29:52

      #include 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; }

      • -4
        @ 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;
        }
        • 1

        信息

        ID
        1223
        时间
        200ms
        内存
        64MiB
        难度
        8
        标签
        递交数
        400
        已通过
        75
        上传者