poj 2891 的源代码和站内线上解释,有解释才给分啊。。
#include
using namespace std;
void gcd(__int64 a,__int64 b,__int64 &d,__int64 &x,__int64 &y)
{
if(b==0)
{
x=1;
y=0;
d=a;
return ;
}
gcd(b,a%b,d,y,x);
y-=x*(a/b);
return ;
}
int main()
{
__int64 b0,bb,m0,m,x,pb;
int i,k;
while(scanf("%d",&k)==1)
{
int ok=1;
m=1,pb=0;
for(i=0;i<k;++i)
{
scanf("%I64d%I64d",&m0,&b0);
if(ok==0)
continue;
__int64 x,y,d;
gcd(m,m0,d,x,y);
if((pb-b0)%d!=0)
{
ok=0;
continue;
}
x*=(b0-pb)/d;
__int64 newm=m/d*m0;
__int64 b=m0/d;
x=(x%b+b)%b;
bb=(pb+x*m)%newm;
m=newm;
pb=bb;
}
ok?printf("%I64d\n",bb):printf("-1\n");
}
return 0;
}
要解释站内联系