#include<iostream> using namespace std ; int main() { int is,is_an,is_o,is_ox; int ans[2][2],o[2][2],xo[2][2]; int a,b,n; while(cin>>a>>b>>n) { is=0; is_an=0; is_o=0; is_ox=0; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { ans[i][j]=0; o[i][j]=0; xo[i][j]=0; } } if(a>0&&b>0) { ans[1][1]=1; ans[0][1]=1; ans[1][0]=1; ans[0][0]=1; } if(a!=b||b!=a) { xo[0][1]=1; xo[1][0]=1; xo[1][1]=1; xo[0][0]=1; } if(a>0||b>0) { o[1][0]=1; o[0][1]=1; o[1][1]=1; o[0][0]=1; } /*for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { cout<<o[i][j]<<" "; } cout<<endl; } cout<<endl; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { cout<<xo[i][j]<<" "; } cout<<endl; } cout<<endl;*/ for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { if(ans[i][j]==n) { is=1; is_an=2; } if(o[i][j]==n) { is=1; is_o=3; } if(xo[i][j]==n) { is=1; is_ox=4; } } } if(is==0) { cout<<"IMPOSSIBLE"<<endl; } if(is_an==2) { cout<<"AND"<<endl; } if(is_o==3) { cout<<"OR"<<endl; } if(is_ox==4) { cout<<"XOR"<<endl; } } }
if(a!=b||b!=a) { xo[0][1]=1; xo[1][0]=1; xo[1][1]=1; xo[0][0]=1; }
a!=b和b!=a應該判斷的東西是一樣的
還有這題數字沒有說一定是0或1
有可能是2.3.4.5......
所以不能用a!=b來判斷xor
如果數字是1和3
那XOR的節果應該是0
而你的寫法應該會變成1
#include using namespace std ; int main() { int is,is_an,is_o,is_ox; int ans[2][2],o[2][2],xo[2][2]; int a,b,n; while(cin>>a>>b>>n) { is=0; is_an=0; is_o=0; is_ox=0;
#include using namespace std ; int main() { int is,is_an,is_o,is_ox; int ans[2][2],o[2][2],xo[2][2]; int a,b,n; while(cin>>a>>b>>n) {
a = (bool)a; b = (bool)b; is=0; is_an=0; is_o=0; is_ox=0; 以下省略...