結果
| 問題 |
No.153 石の山
|
| コンテスト | |
| ユーザー |
ふーらくたる
|
| 提出日時 | 2016-09-17 03:34:44 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,383 bytes |
| コンパイル時間 | 2,297 ms |
| コンパイル使用メモリ | 58,260 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-17 08:12:12 |
| 合計ジャッジ時間 | 1,976 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 13 WA * 14 |
ソースコード
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_N = 110;
int table[MAX_N][2]; // (石の個数, 偶奇(偶:0, 奇:1))
int judge(int stones, int e_or_o) {
if (table[stones][e_or_o] >= 0) {
return table[stones][e_or_o];
}
if (stones == 1) {
return table[stones][e_or_o] = !e_or_o;
}
int res = 0;
if (e_or_o) {
if (stones % 2 == 0) {
res = res || !judge(stones / 2, 1);
res = res || !judge(stones / 2, 0);
} else {
res = res || (!judge(stones / 2, 1) && judge(stones / 2 + 1, 1));
res = res || (!judge(stones / 2, 0) && judge(stones / 2 + 1, 0));
}
if (stones >= 3) {
if (stones % 3 == 0) {
res = res || !judge(stones / 3, 1);
} else if (stones % 3 == 1) {
res = res || (!judge(stones / 3, 1) && !judge(stones / 3 + 1, 1));
res = res || (!judge(stones / 3, 0) && !judge(stones / 3 + 1, 1));
} else {
res = res || (!judge(stones / 3 + 1, 1) && !judge(stones / 3, 1));
res = res || (!judge(stones / 3 + 1, 0) && !judge(stones / 3, 1));
}
}
} else {
if (stones % 2 == 0) {
res = res || (!judge(stones / 2, 1) && !judge(stones / 2, 0));
} else {
res = res || (!judge(stones / 2, 1) && !judge(stones / 2 + 1, 0));
res = res || (!judge(stones / 2, 0) && !judge(stones / 2 + 1, 1));
}
if (stones >= 3) {
if (stones % 3 == 0) {
res = res || !judge(stones / 3, 0);
res = res || (!judge(stones / 3, 0) && !judge(stones / 3, 1));
} else if (stones % 3 == 1) {
res = res || (!judge(stones / 3, 0) && !judge(stones / 3 + 1, 0));
res = res || (!judge(stones / 3, 1) && !judge(stones / 3 + 1, 0));
} else {
res = res || (!judge(stones / 3 + 1, 0) && !judge(stones / 3, 0));
res = res || (!judge(stones / 3 + 1, 1) && !judge(stones / 3, 0));
}
}
}
return table[stones][e_or_o] = res;
}
int main() {
int n;
cin >> n;
memset(table, -1, sizeof(table));
if (judge(n, 1)) {
cout << "A" << endl;
} else {
cout << "B" << endl;
}
return 0;
}
ふーらくたる