如果你不知道什么是中国剩余定理,你可以@它。
猜数字
现有两组数字,每组 k k k个,第一组中的数字分别用 a 1 , a 2 , … , a k a_1,a_2,\dots,a_k a1,a2,…,ak表示,第二组中的数字分别用 b 1 , b 2 , … , b k b_1,b_2,\dots,b_k b1,b2,…,bk表示。其中第二组的数字是两两互素的。求最小的 n ∈ N n\in N n∈N,满足对于 ∀ i ∈ [ i , k ] \forall i\in[i,k] ∀i∈[i,k],有 b i ∣ ( n − a i ) b_i|(n-a_i) bi∣(n−ai)。
输入格式
第一行一个整数 k k k。
第二行 k k k个整数,表示: a 1 , a 2 , … , a k a_1,a_2,\dots,a_k a1,a2,…,ak。
第三行 k k k个整数,表示: b 1 , b 2 , … , b k b_1,b_2,\dots,b_k b1,b2,…,bk。
输出格式
输出一行一个整数,为所求的答案 n n n。 1 ≤ k ≤ 10 , ∣ a i ∣ ≤ 1 0 9 , 1 ≤ b i ≤ 6 × 1 0 3 ∏ i = 1 k b i ≤ 1 0 18 1≤k≤10,∣a_i∣≤10^9,1≤b_i≤6×10^3\prod_{i=1}^k b_i\le 10^{18} 1≤k≤10,∣ai∣≤109,1≤bi≤6×103∏i=1kbi≤1018。
思路:这是孙子定理的模板题,注意数据范围
#include
#include
扩展中国剩余定理
给定 n n n组非负整数 a i , b i a_i,b_i ai,bi,求解关于 x x x的方程组的最小非负整数解。
{ x ≡ b 1 ( m o d a 1 ) x ≡ b 2 ( m o d a 2 ) … x ≡ b n ( m o d a n ) \begin{cases} x\equiv b_1(mod\:a_1)\\ x\equiv b_2(mod\:a_2)\\ \dots\\ x\equiv b_n(mod\:a_n)\\ \end{cases} ⎩ ⎨ ⎧x≡b1(moda1)x≡b2(moda2)…x≡bn(modan)
输入格式
输入一行包含整数 n n n。
接下来 n n n行,每行两个非负整数 a i , b i a_i,b_i ai,bi。
输出格式
输出一行,为满足条件的最小非负整数 x x x。
数据范围
1 ≤ n ≤ 1 0 5 , 1 ≤ b i , a i ≤ 1 0 12 1\leq n\leq10^5,1\leq b_i,a_i\leq10^{12} 1≤n≤105,1≤bi,ai≤1012,保证所有 a 1 a_1 a1的最小公倍数不超过 1 0 18 10^{18} 1018。
思路:同样这也是一道模板题,但是我们要注意数据的范围大小,在编写代码时,使用乘法运算结果会有溢出。
#include
#include