中国剩余定理--不互质情况
来源:互联网 发布:知乎周刊plus我,一个人 编辑:程序博客网 时间:2024/06/04 20:11
传送门:HDU.1573
#include<iostream>#include<cstdio>#include<cstring>#define LL long longusing namespace std;const int maxn=100;LL extend_gcd(LL a,LL b,LL &x,LL &y);int main(){ //freopen("in.txt","r",stdin); int t; cin>>t; while(t--){ LL n,mm,i,a[maxn],m[maxn]; cin>>n>>mm; for(i=1;i<=mm;i++) cin>>m[i]; for(i=1;i<=mm;i++) cin>>a[i]; LL x,y,a1=a[1],m1=m[1],flag=0; for(i=2;i<=mm;i++){//方程组合并为一个方程 LL a2=a[i],m2=m[i]; LL gcd=extend_gcd(m1,m2,x,y); if((a2-a1)%gcd){//有解条件 flag=1; break; } x*=(a2-a1)/gcd; if(x<=0)x+=m2;//求出最小的大于0的x a1+=m1*x; m1=m1*m2/gcd; a1=(a1%m1+m1)%m1; } if(a1>n||flag)cout<<0<<endl; else{ LL k; for(k=0;k*m1+a1<=n;k++); if(a1==0)k--; cout<<k<<endl; //cout<<(n-a1)/m1+1-(!a1?1:0)<<endl; } }}LL extend_gcd(LL a,LL b,LL &x,LL &y){ if(b==0){ x=1; y=0; return a; } LL d=extend_gcd(b,a%b,y,x); y=y-a/b*x; return d;}
阅读全文
0 0
- 中国剩余定理--不互质情况
- HDU3579中国剩余定理(不互质的情况)
- 中国剩余定理 不互质
- 中国剩余定理不互质
- 中国剩余定理模板(2)出现不互质情况
- HDU 3579 中国剩余定理 不互质的情况
- HDU 3579 Hello Kiki 中国剩余定理 不互质情况
- 中国剩余定理(互质与不互质的情况)
- 中国剩余定理(不互质的情况)-HDU3579
- hdu 1573(中国剩余定理非互质情况)
- 中国剩余定理 (非互质情况)
- 中国剩余定理 [mi不互质]
- 中国剩余定理模版【中国剩余定理】
- 【中国剩余定理-M不互质的情况】HDU Hello Kiki 2579
- 中国剩余定理模板(1) 两两互质情况
- HDU 1573 中国剩余定理(有不互质情况)
- hdu3575(中国剩余定理,注意特殊情况处理)
- 中国剩余定理模板(互质的情况)
- 对接微支付接口开发详细步骤
- 03.linux进程与线程
- android 运行乱码解决
- JavaScript传递参数的特殊情况
- android studio 导入 Launcher3 的一些问题
- 中国剩余定理--不互质情况
- NDK的基础教程 六 so库的创建和使用
- WordPress页面加载太慢,怎么办?
- 03.Windows下线程优先级问题
- Android Studio中Kotlin使用错误—compileDebugKotlin
- 项目管理
- 矩阵快速幂中矩阵的构造技巧
- swift之UIButtonl用法详解
- 彻底弄懂HTTP缓存机制及原理