B3908 [语言月赛 202312] 异或构造题?

2023-12-26 13:58:09

题目描述

给定?n?个非负整数?1,2,??,a1?,a2?,?,an?,你需要确定一个非负整数?x,使得?1⊕2⊕?a1?⊕a2?⊕?⊕an?⊕x?最小。

你需要计算?x?和?1⊕2⊕?a1?⊕a2?⊕?⊕an?⊕x。

其中?⊕?代表异或,x⊕y?在 C++ 中可表示为?x ^ y。 对于两个非负整数?x,y,它们的异或是指,将它们作为二进制数,对二进制表示中的每一位进行如下运算得到的结果:

  • x?和?y?的这一位上不同时,结果的这一位为?1;
  • x?和?y?的这一位上相同时,结果的这一位为?0。

例如:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0。

输入格式

输入共两行。

第一行一个整数?n,代表序列?a?的长度。
第二行?n?个整数?1,2,??,a1?,a2?,?,an?,代表序列?a。

输出格式

输出共一行两个整数?x?和?1⊕2⊕?a1?⊕a2?⊕?⊕an?⊕x。

输入输出样例

输入 #1

2
1 2

输出 #1

3 0

输入 #2

2
7 7

输出 #2

0 0

说明/提示

数据规模与约定

对于?100%100%?的数据,1≤n≤106,0≤ai?≤1018。

测试点nai?特殊性质
1=1≤103
2=2≤103a1?=a2?
3~4=2≤103
5≤103=0
6~8≤103≤103
9~11≤106≤103
12~13≤106≤1
14~20≤106≤1018

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	long long x=0;
	for(int i=1;i<=n;i++){
		long long a;
		cin>>a;
		x=x^a;
	}
	cout<<x<<" "<<0<<endl;



	return 0;
}

文章来源:https://blog.csdn.net/eternallt/article/details/135219048
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。