2 条题解

  • -1
    @ 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
      @ 2021-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
      标签
      递交数
      329
      已通过
      53
      上传者