竞赛
考级
非常简单
首先,我们观察样例,前两个对参考意义不大,直接看第三个: 1 2 3 4 5 我们先转成二进制观察: 001 010 011 100 101 然后对齐: 发现每一位上都有 1(也就是说,最大可以转成的数字是 111),每一位上也都有 0(最小可以转成的数字是 000),111 - 000 = 111 = 7,答案为 7。 再看第四个样例,转换: 发现每一位上都有 0(也就是说,最小可以转成的数字是 0000000),但第六位上没有 1,所以,最大可以转成的数字是 1111101,两数之差为 125。 思路已经十分明显,Python 示例代码如下: 其实我认为,这题应该升橙()
SO ESAY! 1.看看 2.啊? 3.啊!
#include<bits/stdc++.h> using namespace std; int a[10005]; int main(){ int t,n,x=0,y=0; cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } x=a[1]; y=a[1]; for(int i=2;i<=n;i++){ x=(x&a[i]); y=(y|a[i]); } cout<<y-x<<endl; } return 0; }
提交答案之后,这里将显示提交结果~