結果
| 問題 |
No.1579 New Type of Nim
|
| コンテスト | |
| ユーザー |
startcpp
|
| 提出日時 | 2021-04-02 01:19:20 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,694 bytes |
| コンパイル時間 | 536 ms |
| コンパイル使用メモリ | 66,836 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-23 05:15:42 |
| 合計ジャッジ時間 | 1,497 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 |
ソースコード
//これは落ちなくても問題ない(片方でも10^9になってるケースが入っていれば落ちます)
#include <iostream>
#include <string>
#include <cassert>
using namespace std;
signed main() {
string s, prev_s;
int lineNum = 0;
while (getline(cin, s)) { //1行読み込む(空白は文字数にカウント,改行はカウントされない)
lineNum++;
int blank = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == ' ') {
blank++;
}
}
assert(blank == 1); //空白は1つじゃないとダメ
prev_s = s;
}
//cerr << "lineNum = " << lineNum << endl;
assert(lineNum == 1); //最後の改行は行数に含まれない
//0文字の改行がsに入っているはずなので、prev_sから入力データを復元
s = prev_s;
int blankPos = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == ' ') {
blankPos = i;
break;
}
}
long long numA = 0;
long long MAX = 999999999;
for (int i = 0; i < blankPos; i++) {
assert('0' <= s[i] && s[i] <= '9'); //数字じゃないとダメ
numA *= 10;
numA += s[i] - '0';
//10^9超えたらオカシイ(100億まで想定したいからlong longで持つ)
assert(numA <= MAX);
}
assert(numA >= 1); //1以上じゃないとオカシイ
long long numB = 0;
for (int i = blankPos + 1; i < s.length(); i++) {
assert('0' <= s[i] && s[i] <= '9'); //数字じゃないとダメ
numB *= 10;
numB += s[i] - '0';
assert(numB <= MAX);
}
assert(numB >= 1); //1以上じゃないとオカシイ
//それ以外ならまともな入力なはず
numA--; numB--;
cout << "PQ"[numA / 2 == numB / 2 && (numA % 2 == 0 || numB % 2 == 0)] << endl;
return 0;
}
startcpp