poj2891:Strange Way to Express Integers
Posted cn-suqingnian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj2891:Strange Way to Express Integers相关的知识,希望对你有一定的参考价值。
分明$excrt$就过了。
为什么还要仔细读题呢?
$qwq$
反正我没读题然后被卡$long long +$输出格式错$……$总共$WA$了四次
怕不是要退役……
上代码:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; long long a[100010],r[100010]; int n; long long exgcd(long long a,long long b,long long &x,long long &y) { if(b==0) return x=1,y=0,a; long long tmp=exgcd(b,a%b,y,x); y-=a/b*x; return tmp; } long long slove() { long long M=a[1],R=r[1],x,y,d; for(int i=2;i<=n;i++) { d=exgcd(M,a[i],x,y); if((R-r[i])%d!=0) return -1; x=(R-r[i])/d*x%a[i]; R-=x*M; M=M/d*a[i]; R%=M; } return (R%M+M)%M; } int main() { while(~scanf("%d",&n)) { for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&r[i]); printf("%lld ",slove()); } return 0; }
以上是关于poj2891:Strange Way to Express Integers的主要内容,如果未能解决你的问题,请参考以下文章
POJ 2891 Strange Way to Express Integers
poj 2891 Strange Way to Express Integers 2012-09-05
POJ2891Strange Way to Express Integers(拓展CRT)
POJ2891Strange Way to Express Integers