表白网站建设,网站怎么做友链,软件开发的周期分几个阶段,东莞什么行业做网站的多1 /*2 题意#xff1a;给多个二进制数#xff0c;对某些数进行按位取反操作#xff01;3 然后从中找到最大数和最小数#xff0c;并输出他们的差值#xff01; 4 注意#xff1a;所有的数都是整数#xff0c;包括取反之后5 6 思路#xff1a;一个n为二进… 1 /*2 题意给多个二进制数对某些数进行按位取反操作3 然后从中找到最大数和最小数并输出他们的差值 4 注意所有的数都是整数包括取反之后5 6 思路一个n为二进制数x令tmp为n位全1则 ytmp(tmp^x)就是取反之后的数字7 将x和y中最大的存放大最大值数组中最小值存放到最小值数组中 8 9 排序之后如果最大值数组第一个元素的下标 最小值数组第一个元素的下标
10 说明这两个最值不是一个数得到的那么就输出差值
11 否则最大的差值就是max(最大值数组[2]-最小值数组[1], 最大值数组[1]-最小值数组[2]);
12 */
13 #includeiostream
14 #includecmath
15 #includecstdio
16 #includecstring
17 #includealgorithm
18 #define N 10005
19 using namespace std;
20 struct node{
21 long long nn;
22 int p; //这个数的下标
23 };
24
25 bool cmpMin(node a, node b){
26 return a.nnb.nn;
27 }
28
29 bool cmpMax(node a, node b){
30 return a.nnb.nn;
31 }
32
33
34 node maxN[N], minN[N];
35
36 char ch[66];
37 int n, k;
38
39 int main(){
40 int t, cc0;
41 scanf(%d, t);
42 while(t--){
43 scanf(%d%d, n, k);
44 long long tmp0;
45 for(int i1; ik; i)
46 tmp(tmp1)1;
47
48 for(int i1; in; i){
49 scanf(%s, ch1);
50 long long xx0;
51 for(int j1; jk; j)
52 if(ch[j]!0)
53 xx(long long)(pow(2.0, (k-j)*1.0)0.5);
54 long long yytmp(xx^tmp);
55 maxN[i].pminN[i].pi;
56 maxN[i].nnmax(xx, yy);
57 minN[i].nnmin(xx, yy);
58 }
59 sort(maxN1, maxNn1, cmpMax);
60 sort(minN1, minNn1, cmpMin);
61 printf(Case #%d: , cc);
62
63 if(n1) printf(0\n);//不要忘记考虑一个数的时候
64 else if(maxN[1].p!minN[1].p)
65 printf(%lld\n, maxN[1].nn-minN[1].nn);
66 else printf(%lld\n, max(maxN[2].nn-minN[1].nn, maxN[1].nn-minN[2].nn));
67
68 }
69 return 0;
70 } 转载于:https://www.cnblogs.com/hujunzheng/p/3920036.html