一、链接
5131. 按要求计算
二、题目
给定一个长度为 nn 的正整数序列 a1,a2,…,ana1,a2,…,an。
请你计算并输出 (min(a1,a2,…,an) xor a3)+2(min(a1,a2,…,an) xor a3)+2 的结果。
xorxor 表示按位异或。
输入格式
第一行包含整数 nn。
第二行包含 nn 个整数 a1,a2,…,ana1,a2,…,an。
输出格式
一个整数,表示结果。
数据范围
所有测试点满足 5≤n≤105≤n≤10,1≤ai≤321≤ai≤32。
输入样例:
5
1 2 3 4 5
输出样例:
4
三、题意
计算一个式子的结果,需要找到一个数组里面最小的元素
四、代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=20;
int a[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
int temp=a[2];
sort(a,a+n);
int res=(a[0]^temp)+2;
printf("%d",res);
return 0;
}
五、总结
1.使用一个临时变量保存即将发生改变的数组元素(有很小的概率不会发生改变)
2.调用algorithm头文件里面的sort函数,使用这个模板把数组里面的数字从小到大进行排序
sort(a,a+n);
3. 用最小值来进行按位异或运算,它的优先级别低于算术运算,所以需要加上一个括号
六、精美图片