結果
問題 |
No.3112 Decrement or Mod Game
|
ユーザー |
![]() |
提出日時 | 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 }