HDU1573:X问题(中国剩余定理)
来源:互联网 发布:js e.target 属性 编辑:程序博客网 时间:2024/04/27 23:07
传送门
题意:
给
(a[i]不互质)。
题解:
中国剩余定理。
考虑两个方程的合并:
考虑用扩欧解出一个
则
把所有方程都合并起来就好了。
#include<bits/stdc++.h>using namespace std;typedef long long ll;inline ll read(){ char ch=getchar();ll i=0,f=1; while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){i=(i<<1)+(i<<3)+ch-'0';ch=getchar();} return i*f;}int n;ll ans,m,A[15],B[15],a,b,res;bool id[15];inline long long gcd(long long a,long long b){ return b?gcd(b,a%b):a;}inline void exgcd(long long x,long long y,long long &a,long long &b){ if(!y) { a=1; b=0; return; } exgcd(y,x%y,a,b); long long a2=a; a=b; b=(a2-b*(x/y));}inline bool merge(int x,int y){ long long t=gcd(A[x],A[y]),t2=B[y]-B[x]; if(t2%t)return false; t2/=t; exgcd(A[x]/t,A[y]/t,a,b); a=(a*t2%(A[y]/t)+A[y]/t)%(A[y]/t); long long x0=a*A[x]+B[x]; t2=A[x]*A[y]/t; B[x]=(A[x]*a+B[x])%t2; A[x]=t2; return true;}int main(){ int T=read(); while(T--) { m=read();n=read();res=1;ans=0;a=0;b=0; for(int i=1;i<=n;i++)A[i]=read(); for(int i=1;i<=n;i++)B[i]=read(); for(int i=1;i<=n;i++)id[i]=true; int bz=1; for(int i=2;i<=n&&bz;i++) { if(!merge(1,i))bz=0; } if(!bz)printf("0\n"); else { ans=(A[1]+B[1])%A[1]; if(m<ans)printf("0\n"); else printf("%lld\n",(m-ans)/A[1]+((ans==0)?(0ll):1ll)); } }}
阅读全文
0 0
- hdu1573 X问题(中国剩余定理)
- HDU1573:X问题(中国剩余定理)
- hdu1573 X问题 中国剩余定理
- hdu1573 X问题 中国剩余定理
- 【HDU1573】X问题 中国剩余定理
- hdu1573 X问题 中国剩余定理 待补完
- [HDU1573]X问题(扩展中国剩余定理)
- hdu1573 X问题(中国剩余定理 不互质)
- (hdu1573)X问题(中国剩余定理+扩展欧几里得算法)
- hdu1573 中国剩余问题定理 模数非互质
- hdu1573 X问题(中国剩余定理解的个数)
- X问题(中国剩余定理应用)
- X问题 + 中国剩余定理
- 不互质的中国剩余定理-HDU1573
- HDU 1573 X问题 数论-(中国剩余定理)
- HDU 1573X问题(中国剩余定理)
- HDU 1573 X问题 (中国剩余定理)
- HDOJ 1573 X问题(中国剩余定理非互质版本)
- 写程序学ML:K近邻(KNN)算法原理及实现(二)
- Oracle 11g数据库安装及配置
- codeforces500C. New Year Book Reading
- WOJ 124 Football Coach(网络流)
- matlab 调用R 命令行 空格不识别 处理方法
- HDU1573:X问题(中国剩余定理)
- spring cloud unavailable-replicas
- 七.Spring的属性注入的方式-简单String类型
- JavaScript_基本语法
- 1833: [ZJOI2010]count 数字计数
- Android Build.VERSION.SDK_INT兼容介绍
- EL标签
- 机器学习之逻辑回归
- 消息队列