POJ2891 Strange Way to Express Integers
来源:互联网 发布:软件应用的英文 编辑:程序博客网 时间:2024/06/05 23:06
题面
题意
给出n对数,每对数为k1,r1,已知m%k1=r1,求m.
方法
欧扩
在输入时,不断改变m的值使它符合条件,为使m也符合之前的条件,故只能加前面所有k的最小公倍数,顾可得如下方程:
ki*x+ri=m(之前)+gcd(k[i-1]……..k[1]) *y.
移项后得ki*x-gcd(….) *y=m-ri.
此方程可用欧扩来解
代码
#include<iostream>#include<cstdio>#define ll long longusing namespace std;ll n,ans,k,g,a,b,c,x,y,move,fh1[]={1,1,-1,-1},fh2[]={1,-1,1,-1};bool P;ll abs(ll u){ return u>0?u:-u;}ll gcd(ll u,ll v){ while(u!=v&&u&&v) { if(u>v) u%=v; else v%=u; } return max(u,v);}ll ny(ll u,ll v){ if(v) { ll p=ny(v,u%v); x-=(u/v)*y; swap(x,y); return p; } else { x=1; y=0; return u; }}int main(){ ll i,j,p,q; while(~scanf("%lld%lld%lld",&n,&k,&ans)) { P=1; for(i=2;i<=n;i++) { scanf("%lld%lld",&p,&q); if(!P) continue; a=p; b=k; c=ans-q; g=gcd(a,b); if(c%g!=0) { P=0; continue; } ny(a,b); x*=c/g; y*=c/g;// cout<<a<<" "<<b<<" "<<c<<endl;// cout<<x<<" "<<y<<endl; move=b/g;// cout<<x<<" "<<move<<" "; x=(x%move+move)%move; k*=p/gcd(k,p);// cout<<x; ans=p*x+q; } if(P) printf("%lld\n",ans); else printf("-1\n"); }}
阅读全文
1 0
- POJ2891 Strange Way to Express Integers
- poj2891 Strange Way to Express Integers
- 【poj2891】 Strange Way to Express Integers
- [POJ2891] Strange Way to Express Integers
- poj2891 Strange Way to Express Integers
- POJ2891 Strange Way to Express Integers
- POJ2891 Strange Way to Express Integers
- Strange Way to Express Integers(poj2891线性同余方程组)
- poj2891 Strange Way to Express Integers 扩展欧几里德的应用
- 解题报告 之 POJ2891 Strange Way to Express Integers
- poj2891 Strange Way to Express Integers(中国剩余定理)
- poj2891 Strange Way to Express Integers(中国剩余定理)
- POJ2891 Strange Way to Express Integers 线性同余方程组
- POJ2891 Strange Way to Express Integers 不互质中国剩余定理
- [POJ2891] Strange Way to Express Integers (扩展欧几里德)
- poj2891 Strange Way to Express Integers 同余方程组
- POJ2891 Strange Way to Express Integers(中国剩余定理)
- [数论] 同余方程组 poj2891 Strange Way to Express Integers
- MAVEN发布固定版本(不需要更改pom更新依赖的方法) -- 自动更新SNAPSHOT
- P2577 [ZJOI2005]午餐
- 有效处理 Java 异常三原则
- 测试
- 【数据结构】[NOIP2013]火柴排队
- POJ2891 Strange Way to Express Integers
- P2592 [ZJOI2008]生日聚会
- <C++> const总结
- 坚持#第230天~零基础自学云计算基础语言应用之python第6节
- HDU5236 Article(期望dp)
- XJOI泡泡糖
- (二十八)RecyclerView ItemTouchHelper 源码分析以及拓展
- [BZOJ4870][SHOI2017]组合数问题 DP+矩阵快速幂
- xUtils的4个用法