結果
| 問題 |
No.792 真理関数をつくろう
|
| コンテスト | |
| ユーザー |
sashiming
|
| 提出日時 | 2019-02-23 14:52:09 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 10 ms / 2,000 ms |
| コード長 | 1,443 bytes |
| コンパイル時間 | 1,729 ms |
| コンパイル使用メモリ | 168,464 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-30 01:36:46 |
| 合計ジャッジ時間 | 2,508 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 22 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define ALL(obj) (obj).begin(), (obj).end()
#define REP(i, n) for(int i = 0;i < (n);++i)
#define REPLL(i, n) for(ll i = 0;i < (n);++i)
#define endl "\n"
#define pb push_back
#define MOD 1000000007LL
#define PI 3.1415926
typedef long long ll;
template <typename T> inline T GCD(T a,T b){T c;while(b!=0){c=a%b;a=b;b=c;}return a;}
template <typename T> inline T LCM(T a,T b){T c=GCD(a,b);a/=c;return a*b;}
template <typename T> inline T nCr(T a,T b){T i,r=1;for(i=1;i<=b;i++){r*=(a+1-i);r/=i;}return r;}
template <typename T> inline T nHr(T a,T b){return nCr(a+b-1,b);}
template <typename T> inline T POW(T a,T b){int i,r=1;for(i=1;i<=b;i++){r*=a;}return r;}
int main(void){
cin.tie(0);
ios::sync_with_stdio(false);
int n; bool q[4100][12], r[4100];
int trues = 0;
cin >> n;
REP(i, pow(2,n)){
REP(j, n) cin >> q[i][j];
cin >> r[i];
if(r[i]) trues++;
}
cout << "A=";
if(trues == 0){
cout << "⊥" << endl;
} else if(trues == pow(2,n)){
cout << "⊤" << endl;
} else {
int lastindex = n;
for (int i = pow(2,n)-1; i >= 0; i--) {
if(r[i]){
lastindex = i;
break;
}
}
string ans = "";
REP(i, pow(2,n)){
if(r[i]){
ans += '(';
REP(j, n){
if(!q[i][j]) ans += "¬";
ans += "P_" + to_string(j+1);
if(j!=n-1) ans += "∧";
}
if(i != lastindex) ans += ")∨";
else ans += ')';
}
}
cout << ans << endl;
}
return 0;
}
sashiming