51Nod-1079-中国剩余定理
2017-08-26 19:31
225 查看
51Nod-1079-中国剩余定理
解题方法
记住模的数学表达式:
中国剩余定理给出了以下的一元线性同余方程组:
求解步骤:
第一步:求出每个Mi
第二步:求出Mi模mi的数论倒数ti
第三步:求出方程组的解:
该定理的细节可以看维基百科上给出的证明——中国剩余定理
维基需要翻墙,可以去看看百度给出的证明——中国剩余定理
解题代码
1079 中国剩余定理 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。 例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。 Input 第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10) 第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P) Output 输出符合条件的最小的K。数据中所有K均小于10^9。 Input示例 3 2 1 3 2 5 3 Output示例 23
解题方法
记住模的数学表达式:
中国剩余定理给出了以下的一元线性同余方程组:
求解步骤:
第一步:求出每个Mi
第二步:求出Mi模mi的数论倒数ti
第三步:求出方程组的解:
该定理的细节可以看维基百科上给出的证明——中国剩余定理
维基需要翻墙,可以去看看百度给出的证明——中国剩余定理
解题代码
while True: try: n, cnt= int(input()), 1 A = [] #cnt为全部质数的乘积 for i in range(n): a, b = list(map(int, input().split())) A.append((a,b)) cnt = cnt * a ans = M = t = 0 for (i, a) in A: M = cnt/i #求M的数论倒数t for k in range(i): if (M*k)%i == 1: t = k break ans += a*t*M #方程组的解ans ans = int(ans%cnt) print(ans) except EOFError: break
相关文章推荐
- 51nod 1079 中国剩余定理
- 51Nod 1079中国剩余定理(孙子定理)
- 51nod 1079 中国剩余定理
- 51nod - -1079 中国剩余定理
- 51nod-【1079 中国剩余定理】
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod-1079中国剩余定理
- 51nod:1079 中国剩余定理(数学)
- 51nod 1079 中国剩余定理
- 51nod--1079 中国剩余定理
- 51Nod 1079:中国剩余定理
- 51Nod-1079-中国剩余定理
- 51nod 1079 中国剩余定理
- [51NOD - 1079] 中国剩余定理
- 51NOD——T 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51NOD - 1079 中国剩余定理
- 51nod-1079 中国剩余定理
- 51nod 1079 中国剩余定理