记录编号 581596 评测结果 AAAAAAAAAAAAAAAAAAAAA
题目名称 [POJ 1061] 青蛙的约会 最终得分 100
用户昵称 GravatarHzoi_Mafia 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2023-08-07 15:40:50 内存使用 0.00 MiB
显示代码纯文本
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long L;
L x,y,m,n,l,gcd,xx,yy;
inline L exgcd(L a,L b,L &x,L &y){
	if(!b){x=1;y=0;return a;}
	L gcd(exgcd(b,a%b,x,y)),tmp(x);
	x=y;y=tmp-a/b*y;return gcd;
}
int main(){
	freopen("poj_hama.in","r",stdin);freopen("poj_hama.out","w",stdout);
	scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
	gcd=exgcd(l,m-n,xx,yy);//cout<<l<<' '<<m-n<<' '<<xx<<' '<<yy<<' '<<gcd<<' '<<y-x<<endl;
	if((y-x)%gcd){puts("Impossible");return 0;}
	yy=yy*(y-x)/gcd;//cout<<l<<' '<<gcd<<' '<<l/gcd<<endl;
	// if(l/gcd>0){
	// 	while(yy>0)yy-=l/gcd;
	// 	while(yy<0)yy+=l/gcd;
	// }
	// else{
	// 	while(yy>0)yy+=l/gcd;
	// 	while(yy<0)yy-=l/gcd;
	// }
	L delta(abs(l/gcd));
	if(yy<0){
		yy=delta-(-yy)%delta;
		// yy=yy+((-yy-1)/delta+1)*delta;
	}
	else{
		yy=yy%delta;
		// yy=yy-(yy/delta)*delta;
	}
	printf("%lld",yy);
}