P13392 [GCJ 2010 #1A] Number Game

题目描述

Arya 和 Bran 正在玩一个游戏。最初,黑板上写着两个正整数 $A$ 和 $B$。两位玩家轮流行动,Arya 先手。在每一回合,玩家可以将 $A$ 替换为 $A - k \times B$($k$ 为任意正整数),或者将 $B$ 替换为 $B - k \times A$($k$ 为任意正整数)。第一个使得其中一个数变为零或负数的人输掉游戏。 例如,如果初始数字为 $(12, 51)$,游戏过程可能如下: - Arya 将 $51$ 替换为 $51 - 3 \times 12 = 15$,黑板上变为 $(12, 15)$。 - Bran 将 $15$ 替换为 $15 - 1 \times 12 = 3$,黑板上变为 $(12, 3)$。 - Arya 将 $12$ 替换为 $12 - 3 \times 3 = 3$,黑板上变为 $(3, 3)$。 - Bran 将其中一个 $3$ 替换为 $3 - 1 \times 3 = 0$,Bran 输掉游戏。 我们称 $(A, B)$ 为“必胜态”,如果 Arya 无论 Bran 如何应对,都能保证获胜。 给定四个整数 $A_1$、$A_2$、$B_1$、$B_2$,请统计有多少个 $(A, B)$ 是必胜态,且满足 $A_1 \leq A \leq A_2$ 且 $B_1 \leq B \leq B_2$。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。接下来 $T$ 行,每行包含四个整数 $A_1$、$A_2$、$B_1$、$B_2$,用空格分隔。

输出格式

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

说明/提示

**数据范围** - $1 \leqslant T \leqslant 100$。 - $1 \leqslant A_1 \leqslant A_2 \leqslant 1,000,000$。 - $1 \leqslant B_1 \leqslant B_2 \leqslant 1,000,000$。 **小数据(16 分,测试点 1 - 可见)** - 时间限制:3 秒。 - $A_2 - A_1 \leqslant 30$。 - $B_2 - B_1 \leqslant 30$。 **大数据(25 分,测试点 2 - 隐藏)** - 时间限制:9 秒。 - $A_2 - A_1 \leqslant 999,999$。 - $B_2 - B_1 \leqslant 999,999$。 - 无其他限制。 由 ChatGPT 4.1 翻译