1 solutions
-
0
中国剩余定理
设 是两两互质的整数,,
,
是线性同余方程的一个解。
对于任意的个整数 方程组
是原方程的一个解.
代码实现
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=15; LL a[N],m[N]; LL exgcd(LL a,LL b,LL &x,LL &y) { if(!b) { x=1,y=0; return a; } else { LL d=exgcd(b,a%b,y,x); y=y-a/b*x; return d; } } int main() { int n; cin>>n; LL M=1; for(int i=1;i<=n;i++) { cin>>m[i]>>a[i]; M*=m[i];//读入m[i]的同时计算M } LL res=0; for(int i=1;i<=n;i++) { LL Mi=M/m[i];//计算Mi LL ti,y; exgcd(Mi,m[i],ti,y); //ti*Mi+y*mi=1 res+=a[i]*Mi*ti; } cout<<(res%M+M)%M<<endl; return 0; }
- 1
Information
- ID
- 1914
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 1
- Accepted
- 1
- Uploaded By