#P2891. Strange Way to Express Integers
Strange Way to Express Integers
问题描述
Elina 正在阅读刘汝佳的一本书,书中介绍了一种表示非负整数的独特方法。该方法描述如下:
选择 个不同的正整数 。对于某个非负整数 ,分别用每个 ()去除 ,得到余数 。如果 选择得当,那么 就可以被唯一确定,此时数对 就可以用来表示 。
"从 计算出这些数对很容易," Elina 说,"但我怎么从这些数对反推 呢?"
由于 Elina 是编程新手,这个问题对她来说太难了。你能帮帮她吗?
输入格式
输入包含多个测试用例。每个测试用例由若干行组成:
- 第 1 行:包含整数 。
- 第 2 ~ 行:每行包含两个整数 和 ()。
输出格式
对于每个测试用例,在单独的一行中输出非负整数 。如果存在多个可能的 值,输出最小的那个。如果没有可能的 值,则输出 。
输入样例
2
8 7
11 9
输出样例
31
样例解释
对于样例输入:
- 第一个数对:,
- 第二个数对:,
我们需要找到一个非负整数 ,使得:
$$\begin{cases} m \equiv 7 \pmod{8} \\ m \equiv 9 \pmod{11} \end{cases} $$验证:,,满足条件。且 是该同余方程组的最小非负整数解。
数据范围与提示
- 输入和输出中的所有整数都是非负的。
- 所有整数都可以用 64 位整型(即 C++ 中的
long long类型)表示。 - 题目来源:POJ Monthly--2006.07.30, Static