扩展中国剩余定理
2018-01-21 22:16
465 查看
http://blog.csdn.net/litble/article/details/75807726
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #define ll long long using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n; ll m[100005],a[100005],x,y; ll ex_gcd(ll a,ll b) { if (!b){x=1;y=0;return a;} ll d=ex_gcd(b,a%b),t=x; x=y;y=t-(a/b)*y; return d; } inline ll solve() { ll M=m[1],A=a[1],t; for (int i=2;i<=n;i++) { ll d=ex_gcd(M,m[i]); if ((a[i]-A)%d) return -1; x*=(a[i]-A)/d;t=m[i]/d;x=(x%t+t)%t; A=M*x+A;M=M/d*m[i];A%=M; } return (A%M+M)%M; } int main() { while (scanf("%d",&n)!=EOF) { for (int i=1;i<=n;i++) scanf("%lld%lld",&m[i],&a[i]); printf("%lld\n",solve()); } return 0; }
相关文章推荐
- poj2891——Strange Way to Express Integers(扩展欧几里得解中国剩余定理)
- 【bzoj2142】礼物 扩展Lucas定理+中国剩余定理
- 扩展欧几里得、逆元、线性同余方程组、中国剩余定理总结
- [省选前题目整理][SGU 261]Discrete Roots(扩展欧几里得+中国剩余定理+原根+大步小步算法)
- LOJ2721 [NOI2018] 屠龙勇士 【扩展中国剩余定理】
- POJ 2891 Strange Way to Express Integers(中国剩余定理扩展)
- 扩展欧几里得&&中国剩余定理 解线性同余方程组 专题
- [BZOJ2142]-扩展Lucas+中国剩余定理
- pij2891 扩展欧几里得中国剩余定理
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理+中国剩余定理)
- 2018年全国多校算法寒假训练营练习比赛(第三场) B 一个小问题【CRT 扩展中国剩余定理 板子题】
- 扩展欧几里德 中国剩余定理 合并模线性方程组
- 扩展欧几里德线性同余方程 中国剩余定理 欧拉函数 资料
- 扩展中国剩余定理讲解
- 扩展欧几里得、求乘法逆元及其应用、中国剩余定理(互质版和非互质版)、欧拉函数、快速判素数模板
- HDU 3579 扩展中国剩余定理
- 扩展欧几里德算法 线性同余方程 中国剩余定理 (转载)
- 扩展中国剩余定理讲解
- [BZOJ2142]礼物-扩展lucas定理-中国剩余定理
- 扩展的欧几里得&中国剩余定理