1 条题解
-
1
板子中国剩余定理
#include<cstdio> #include<bits/stdc++.h> #define ll long long using namespace std; int n,a[11],b[11]; long long M=1,x,y,ans; ll exgcd(ll A,ll B,ll &x,ll &y) { if(B==0) { x=1; y=0; return A; } ll k=exgcd(B,A%B,x,y); ll z=x; x=y; y=z-y*(A/B); return k; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&b[i],&a[i]); M*=b[i]; } for(int i=1;i<=n;i++) { ll mi=M/b[i];//记得开longlong!!我忘开直接100变80了 ll Gcd=exgcd(mi,b[i],x,y); // cout<<x<<' '<<ans; ans=((ans+x*mi*a[i])%M+M)%M; } cout<<(ans%M+M)%M; }
信息
- ID
- 1214
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 30
- 已通过
- 8
- 上传者