首页 > 其他 > 详细

[NOIP2017提高组]小凯的疑惑-扩展欧几里得

时间:2019-01-22 16:56:08      阅读:161      评论:0      收藏:0      [点我收藏+]
#include<bits/stdc++.h>
using namespace std;
long long a,b,x,y,ans,tmp;
inline void ex_gcd(long long a,long long b,long long &x,long long &y){
	if(!b){
		x = 1;
		y = 0;
		return;
	}
	ex_gcd(b,a%b,y,x);
	y -= (a/b)*x;
}
int main(){
	cin>>a>>b;
	ex_gcd(a,b,x,y);
	if(x > 0)swap(a,b),swap(x,y);
	tmp = (-x)/b;
	x = x+tmp*b;
	y = y-tmp*a;
	while(x < 0)x += b,y -= a;
	while(x > 0)x -= b,y += a;
	tmp = x+b;
	ans = a*(tmp-1)+b*(y-1);
	cout<<ans-1<<endl;
	return 0;
}

  还有特别巨小伙伴直接用

#include<bits/stdc++.h>
using namespace std;
long long a,b,ans,sum,t;
int main(){
    scanf("%lld %lld",&a,&b);
    if (a>b)swap(a,b);
    t=(a-1)*b/a-1;
    sum=(sum+(a-1)*b)%a;
    printf("%lld",t*a+sum);
    return 0;
}

  

[NOIP2017提高组]小凯的疑惑-扩展欧几里得

原文:https://www.cnblogs.com/wangyifan124/p/10304559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!