NEFU 84

其实同POJ 1061

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

long long  gcd(long long a,long long b){
	if(b==0) return a;
	return gcd(b,a%b);
}

void exgcd(long long a,long long b,long long &x,long long &y){
	if(b==0){
		x=1; y=0; return;
	}
	exgcd(b,a%b,x,y);
	long long t=x;
	x=y;
	y=t-a/b*y;
}

int main(){
	int t;
	long long n,d,x,y,a,b,c;
	scanf("%d",&t);
	while(t--){
		cin>>n>>d>>x>>y;
		a=n; b=d; c=y-x;
		long long r=gcd(a,b);
		if(c%r!=0){
			printf("Impossible\n");
			continue;
		}
		a/=r; b/=r; c/=r;
		exgcd(a,b,x,y);
		y*=c;
		printf("%lld\n",(y%a+a)%a);
	}
	return 0;
}

  

posted @ 2014-08-27 15:17  chenjunjie1994  阅读(144)  评论(0编辑  收藏  举报