結果
| 問題 |
No.3112 Decrement or Mod Game
|
| コンテスト | |
| ユーザー |
aaaaaaaaaaa
|
| 提出日時 | 2025-04-19 00:27:30 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,889 bytes |
| コンパイル時間 | 714 ms |
| コンパイル使用メモリ | 66,448 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-04-19 00:27:36 |
| 合計ジャッジ時間 | 2,452 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 46 WA * 19 |
ソースコード
#include <iostream>
#include <string> // 虽然没直接用,但包含常见的头文件是好习惯
int main() {
// 提高 C++ I/O 速度 (在竞技编程中常用)
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
long long A, B;
std::cin >> A >> B;
// 检查输入是否符合约束 (理论上不需要,因为题目保证了 A, B >= 1)
// if (A <= 0 || B <= 0) {
// // 处理无效输入或边界情况,根据需要
// return 1;
// }
while (true) {
// --- Alice's Turn ---
// 在 Alice 回合开始时,A 和 B 必定都大于 0,否则游戏在上个回合就结束了
if (A >= B) {
// 如果 B=0 会怎样? 但 B>0 因为循环条件。
// 如果 B=1, A % B = A % 1 = 0. Alice 直接获胜。
if (B == 0) { // 防御性检查,理论上不会发生
std::cout << "Alice" << std::endl; // Bob 的数为 0,Alice 胜? 规则是自己变0才赢
return 0; // 或者根据具体规则处理
}
A = A % B;
if (A == 0) {
// Alice 将自己的数 A 变成了 0
std::cout << "Alice" << std::endl;
return 0;
}
// 如果 A 没变 0, 则 A 现在严格小于 B
} else { // A < B
// Alice 必须执行 A = A - 1
A = A - 1;
if (A == 0) {
// Alice 将自己的数 A 变成了 0
std::cout << "Alice" << std::endl;
return 0;
}
// A 可能仍然小于 B,或者等于 B-1
}
// Alice 移动后: A >= 0, B > 0. 如果 A > 0, 轮到 Bob
// --- Bob's Turn ---
// 在 Bob 回合开始时,A 和 B 必定都大于 0,否则游戏在上个回合就结束了
if (B >= A) {
// 如果 A=0 会怎样? 但 A>0 因为循环条件。
// 如果 A=1, B % A = B % 1 = 0. Bob 直接获胜。
if (A == 0) { // 防御性检查
std::cout << "Bob" << std::endl;
return 0;
}
B = B % A;
if (B == 0) {
// Bob 将自己的数 B 变成了 0
std::cout << "Bob" << std::endl;
return 0;
}
// 如果 B 没变 0, 则 B 现在严格小于 A
} else { // B < A
// Bob 必须执行 B = B - 1
B = B - 1;
if (B == 0) {
// Bob 将自己的数 B 变成了 0
std::cout << "Bob" << std::endl;
return 0;
}
// B 可能仍然小于 A,或者等于 A-1
}
// Bob 移动后: A > 0, B >= 0. 如果 B > 0, 轮到 Alice
}
return 0; // 理论上循环内总会 return
}
aaaaaaaaaaa