【模板】【POJ2891】扩展中国剩余定理
来源:互联网 发布:moe域名在哪注册 编辑:程序博客网 时间:2024/06/03 11:01
exCRT适用于模数两两不互素的情况,思路是把方程两两合并即可,具体看这个博客吧:传送门
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;typedef long long LL;const int N=1005;int k;LL c[N],m[N];bool flag;LL gcd(LL a,LL b){ return b?gcd(b,a%b):a;}LL exgcd(LL a,LL b,LL &x,LL &y){ if(!b) {x=1;y=0;return a;} else exgcd(b,a%b,y,x),y-=a/b*x;}LL inv(LL a,LL mod){ LL x,y; exgcd(a,mod,x,y); return (x%mod+mod)%mod;}LL exCRT(int k){ LL m1,m2,c1,c2,g; for(int i=2;i<=k;i++) { m1=m[i-1],m2=m[i]; c1=c[i-1],c2=c[i]; g=gcd(m1,m2); if((c2-c1)%g) {flag=0;return -1;} m[i]=m1*m2/g; c[i]=inv(m1/g,m2/g)*((c2-c1)/g)%(m2/g)*m1+c1; c[i]=(c[i]%m[i]+m[i])%m[i]; } return c[k];}int main(){ while(~scanf("%d",&k)) { for(int i=1;i<=k;i++) scanf("%lld%lld",&m[i],&c[i]); printf("%lld\n",exCRT(k)); } return 0;}
阅读全文
0 0
- 【模板】【POJ2891】扩展中国剩余定理
- poj2891 中国剩余定理
- poj2891(中国剩余定理)
- 扩展中国剩余定理模板
- 中国剩余定理 poj 1006 poj2891
- [POJ2891]Strange Way to Express Integers(扩展中国剩余定理)
- poj2891——Strange Way to Express Integers(扩展欧几里得解中国剩余定理)
- 中国剩余定理+扩展
- 模板[中国剩余定理]
- 中国剩余定理 模板
- 中国剩余定理模板
- 中国剩余定理模板
- 【中国剩余定理模板】
- 中国剩余定理 模板
- 中国剩余定理模板
- 中国剩余定理模板
- poj2891 Strange Way to Express Integers(中国剩余定理)
- poj2891(中国剩余定理模版::不要求模数互质)
- Unity Json与Xml解析
- TCP通信的服务器(两个客户端通过服务器进行数据中转)
- 首次曝光!在线视频衣物精确检索技术_开启刷剧败明星同款时代
- listView的多条目加载(类似头条新闻之类的)
- Integrating Deadbolt
- 【模板】【POJ2891】扩展中国剩余定理
- CentOS 7安装和配置ssh
- POJ
- maven+ssm练习(级别评定)
- es6:let和var的区别
- Modelsim SE-64 10.4建立UVM环境
- ssm单文件下载ftp服务器到本地
- 解决浏览器记住账户密码 运用readonly属性
- Virustotal——上传样本保存扫描结果