Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Equation"
https://onlinejudge.u-aizu.ac.jp/problems/2401
・恒等式
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume24 - 2401 : Equation
/* Aizu Online Judge in C++ #Volume24 - 2401 : Equation https://onlinejudge.u-aizu.ac.jp/problems/2401 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll i,v; string s; ll f(){ i++; if(s[i]=='T'){ return 1; } if(s[i]=='F'){ return 0; } if(isalpha(s[i])){ return v>>(s[i]-'a')&1; } if(s[i]=='-'){ return !f(); } ll l=f(); i++; ll num=s[i]; if(num=='-'){ i++; } ll r=f(); i++; if(num=='*'){ return l&r; } if(num=='+'){ return l|r; } if(num=='-'){ return l<=r; } return 0; } int main(void){ while(cin>>s){ if(s=="#"){ break; } ll k=1; for(v=0;v<(1<<11);v++){ i=-1; ll j=f(); i++; if(j!=f()){ k=0; break; } } cout<<(k ? "YES\n" : "NO\n"); } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/