zoukankan      html  css  js  c++  java
  • (Good Bye 2019) Codeforces 1270C Make Good

    题目链接:

    Codeforces 1270 C Make Good

    思路:

    设已有的所有数相加得到x,异或得到y
    第一步我们在尾部附加y,现在两个数为x+y和0;
    第二步我们在尾部附加x+y,现在两个数为2(x+y)和x+y;
    这样就符合题意了~

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef pair<int,int> P;
    typedef long long ll;
    #define fi first
    #define sc second
    #define pb(a) push_back(a)
    #define mp(a,b) make_pair(a,b)
    #define pt(a) cerr<<a<<"---
    "
    #define rp(i,n) for(int i=0;i<n;i++)
    #define rpn(i,n) for(int i=1;i<=n;i++)
    int main(){
    	ios::sync_with_stdio(false); cin.tie(nullptr);
    	int t; cin>>t;
    	while(t--){
    		int n; cin>>n;
    		ll x=0,y=0;
    		rp(i,n){
    			ll a; cin>>a; 
    			x+=a; y^=a;
    		}
    		if(x==(y<<1)){
    			cout<<0<<'
    '<<'
    ';
    		}else{
    			cout<<2<<'
    '<<y<<' '<<x+y<<'
    ';
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    分糖果
    数字游戏
    错误票据
    包子凑数
    带分数
    翻硬币
    核桃的数量
    快速幂
    公倍数与素数筛选
    mysql 查询当天当周当月的数据
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308708.html
Copyright © 2011-2022 走看看