本文主要是介绍B3908 [语言月赛 202312] 异或构造题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定 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。
测试点 | n | ai | 特殊性质 |
---|---|---|---|
1 | =1 | ≤103 | 无 |
2 | =2 | ≤103 | a1=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;
}
这篇关于B3908 [语言月赛 202312] 异或构造题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!