bzoj Strange Way to Express Integersexcrt
Posted lokiii
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj Strange Way to Express Integersexcrt相关的知识,希望对你有一定的参考价值。
其实我没看懂题不如说根本没看……都说是excrt板子那就写个板子吧
注意开long long
#include<iostream>
#include<cstdio>
using namespace std;
const long long N=100005;
long long n,r[N],m[N];
void exgcd(long long a,long long b,long long &d,long long &x,long long &y)
{
if(b==0)
{
d=a,x=1,y=0;
return;
}
exgcd(b,a%b,d,y,x);
y-=a/b*x;
}
long long excrt()
{
long long M=m[1],R=r[1],x,y,d;
for(long long i=2;i<=n;i++)
{
exgcd(M,m[i],d,x,y);
if((r[i]-R)%d)
return -1;
x=(r[i]-R)/d*x%(m[i]/d);
R=R+x*M;
M=M/d*m[i];
R%=M;
}
return R>0?R:R+M;
}
int main()
{
while(~scanf("%lld",&n))
{
for(long long i=1;i<=n;i++)
scanf("%lld%lld",&m[i],&r[i]);
printf("%lld
",excrt());
}
return 0;
}
以上是关于bzoj Strange Way to Express Integersexcrt的主要内容,如果未能解决你的问题,请参考以下文章
POJ 2891 Strange Way to Express Integers
POJ——T 2891 Strange Way to Express Integers
POJ2891 Strange Way to Express Integers线性同余方程
POJ2891Strange Way to Express Integers