不互质的中国剩余定理-HDU1573
2017-07-26 18:57
417 查看
https://vj.xtuacm.cf/contest/view.action?cid=86#problem/C
不互质的中国剩余定理模板,有些细节需要注意
在中国剩余定理中如果没有解会返回-1
另外题目要求是正整数,最后有一些小技巧
不互质的中国剩余定理模板,有些细节需要注意
在中国剩余定理中如果没有解会返回-1
另外题目要求是正整数,最后有一些小技巧
#include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll l; void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y) { if(!b) {d=a;x=1;y=0;} else{ ex_gcd(b,a%b,d,y,x); y-=x*(a/b); } } ll ex_crt(ll m[],ll r[],int n) { ll M=m[1],R=r[1],x,y,d; for(int i=2;i<=n;i++){ ex_gcd(M,m[i],d,x,y); if((r[i]-R)%d) return -1;//当没有符合要求的情况时返回-1 x=(r[i]-R)/d*x%(m[i]/d); R+=x*M; M=M/d*m[i]; R%=M; } l=M; return R<0?R+M:R; } int main() { ll a[15],b[15]; int t; scanf("%d",&t); while(t--) { int x; int y; scanf("%d %d",&x,&y); for(int i=1;i<=y;i++) scanf("%I64d",&a[i]); for(int i=1;i<=y;i++) scanf("%I64d",&b[i]); ll s=ex_crt(a,b,y); if(s>x||s==-1)//当为-1时没有符合要求的数 cout<<0<<endl; if(s==x) cout<<1<<endl; if(s<x) { if(s>0) cout<<(x-s)/l+1<<endl; if(s==0) //0是满足同余的第一个数时 cout<<x/l<<endl; } } return 0; }
相关文章推荐
- 模线性方程组-非互质中国剩余定理 HDU3579 HDU1573
- hdu1573 X问题(中国剩余定理 不互质)
- X问题(中国剩余定理+不互质版应用)hdu1573
- ZOJ 3562 Alice's Sequence I 中国剩余定理 不互质
- hdu1573 X问题 中国剩余定理 待补完
- POJ 1006 Biorhythms --中国剩余定理(互质的)
- 中国剩余定理(不互质的情况)-HDU3579
- Hdu 1573 X问题 + Hdu 3579 Hello Kiki (模线性方程组-非互质中国剩余定理)
- HDU 3579 Hello Kiki 解题报告(中国剩余定理 非互质)
- 解模线性方程组 非互质中国剩余定理
- hdoj-3579-Hello Kiki【中国剩余定理 & 除数不互质】
- poj 2891 Strange Way to Express Integers——使用中国剩余定理中处理某些方程模数不互质的方法
- hdu 3579 Hello Kiki 不互质的中国剩余定理
- BestCoder Round #80 1004 hdu 5668 中国剩余定理(m不互质版)
- hdu - 1788 - Chinese remainder theorem again-(gcd,不互质的中国剩余定理)
- hdoj-1573-X问题【中国剩余定理 & 除数不互质】
- poj 2891Strange Way to Express Integers 中国剩余定理(不互质) 数据没读完就结束了程序居然是runtime error。
- 不互质的中国剩余定理
- HDU3579中国剩余定理(不互质的情况)
- hdu 3579 Hello Kiki 中国剩余定理(不互质形式)模板题