本文主要是介绍2011百校联动“菜鸟杯”程序设计公开赛Magic Potion,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这一题是个位运算题,可怜我理解能力太差,,,好大一会才明白,,,也算是个枚举题吧,,,
#include<iostream>
#include<string.h>
using namespace std;
int main()
{ int n;
cin>>n;
while(n--)
{ int m=0,p=0,i,j;
int y[9],x[9];
cin>>y[1]>>y[2]>>y[3]>>y[4]>>y[5]>>y[6]>>y[7]>>y[8]>>y[0];
for(j=0;;++j)
{ m=m^(1<<j);
for( i=0;i<9;++i)
x[i]=y[i]^p;
if(x[0]==(x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8])) break;
else if((x[0]&m)==((x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8])&m)) continue;
p=p^(1<<j);
for( i=0;i<9;++i)
x[i]=y[i]^p;
if(x[0]==(x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8])) break;
else if((x[0]&m)==((x[1]+x[2]+x[3]+x[4]+x[5]+x[6]+x[7]+x[8])&m)) continue;
}
cout<<p<<endl;
}return 0;
}
这篇关于2011百校联动“菜鸟杯”程序设计公开赛Magic Potion的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!