HDU 1576 A/B【扩展欧几里德】

时间:2023-08-27 20:17:02

设A/B=x,则A=Bx

n=A%9973=A-9973*y=Bx-9973*y

用扩展欧几里德求解

#include<stdio.h>
#include<string.h>
typedef long long ll;
ll ex_gcd(ll a,ll b,ll &x,ll &y){
if(!b){
x=,y=;
return a;
}
ll ans=ex_gcd(b,a%b,y,x);
y-=a/b*x;
return ans;
}
void cal(ll a,ll b,ll c){
ll x,y;
ll d=ex_gcd(a,b,x,y);
x=((x*c)%b+b)%b;
printf("%I64d\n",x);
}
int main(){
int t;
ll a,c;
scanf("%d",&t);
while(t--){
scanf("%I64d%I64d",&c,&a);
cal(a,,c);
}
return ;
}