poj1061,斐蜀定理

费蜀定理:
对于任意正整数x,y,一定存在整数a,b,使得:    ax+by=gcd(x,y);

定理1 gcd(a,b)是ax+by的线性组合的最小正整数
定理2 如果ax+by=c,x,y∈z;则c%gcd==0;
定理3 如果ab是互质的正整数,c是整数,且方程 ax+by=c有一组整数解x0y0,则此方程的一切整数解可以表示为x=x0+bt;y=y0-at;t∈z;(所以解都是第一组解的倍数)
#include <iostream>
#include <algorithm>

using namespace std;

int x,y,xn,yn,l;

int gcd(int a,int b){
	return b?gcd(b,a%b):a;
}

int main(int argc, char** argv) {
	cin>>x>>y>>xn>>yn>>l;
	if(yn==xn){
		cout<<"Impossible\n";
		return 0;
	}
	if(yn>xn) swap(yn,xn),swap(y,x);
	long long s=(x>y)?y+l-x:y-x;
//cout<<s<<endl;
	int v=xn-yn;
	if(s%gcd(v,l)==0){
		while(s%v!=0) s+=l;
		cout<<s/v<<endl;
	}else cout<<"Impossible\n";
	return 0;
}


全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务