#P13392. [GCJ 2010 #1A] Number Game

    ID: 15261 远端评测题 3000~9000ms 1024MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>博弈论2010Google Code Jam

[GCJ 2010 #1A] Number Game

题目描述

Arya 和 Bran 正在玩一个游戏。最初,黑板上写着两个正整数 AA 和 BB。两位玩家轮流行动,Arya 先手。在每一回合,玩家可以将 AA 替换为 A−k×BA - k \times B(kk 为任意正整数),或者将 BB 替换为 B−k×AB - k \times A(kk 为任意正整数)。第一个使得其中一个数变为零或负数的人输掉游戏。

例如,如果初始数字为 (12,51)(12, 51),游戏过程可能如下:

  • Arya 将 5151 替换为 51−3×12=1551 - 3 \times 12 = 15,黑板上变为 (12,15)(12, 15)。
  • Bran 将 1515 替换为 15−1×12=315 - 1 \times 12 = 3,黑板上变为 (12,3)(12, 3)。
  • Arya 将 1212 替换为 12−3×3=312 - 3 \times 3 = 3,黑板上变为 (3,3)(3, 3)。
  • Bran 将其中一个 33 替换为 3−1×3=03 - 1 \times 3 = 0,Bran 输掉游戏。

我们称 (A,B)(A, B) 为“必胜态”,如果 Arya 无论 Bran 如何应对,都能保证获胜。

给定四个整数 A1A_1、A2A_2、B1B_1、B2B_2,请统计有多少个 (A,B)(A, B) 是必胜态,且满足 A1≤A≤A2A_1 \leq A \leq A_2 且 B1≤B≤B2B_1 \leq B \leq B_2。

输入格式

输入的第一行包含一个整数 TT,表示测试用例的数量。接下来 TT 行,每行包含四个整数 A1A_1、A2A_2、B1B_1、B2B_2,用空格分隔。

输出格式

对于每个测试用例,输出一行,格式为 "Case #x: y",其中 xx 表示测试用例编号(从 1 开始),yy 表示满足条件的必胜态 (A,B)(A, B) 的数量。

3
5 5 8 8
11 11 2 2
1 6 1 6
Case #1: 0
Case #2: 1
Case #3: 20

提示

数据范围

  • 1⩽T⩽1001 \leqslant T \leqslant 100。
  • 1⩽A1⩽A2⩽1,000,0001 \leqslant A_1 \leqslant A_2 \leqslant 1,000,000。
  • 1⩽B1⩽B2⩽1,000,0001 \leqslant B_1 \leqslant B_2 \leqslant 1,000,000。

小数据(16 分,测试点 1 - 可见)

  • 时间限制:3 秒。
  • A2−A1⩽30A_2 - A_1 \leqslant 30。
  • B2−B1⩽30B_2 - B_1 \leqslant 30。

大数据(25 分,测试点 2 - 隐藏)

  • 时间限制:9 秒。
  • A2−A1⩽999,999A_2 - A_1 \leqslant 999,999。
  • B2−B1⩽999,999B_2 - B_1 \leqslant 999,999。
  • 无其他限制。

由 ChatGPT 4.1 翻译