标准的的最后一步(即输出):
cout<<(x%b+b)%b;
但此题中这样交也能A:
cout<<(x+b)%b;
总觉得有问题,但同学写的生成数据的一直找不到hack数据。
完整程序:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int exgcd(ll a,ll b,ll &x,ll &y){
if(b==0){
x=1;y=0;
return a;
}
ll d=exgcd(b,a%b,x,y);
ll z=x;x=y;y=z-y*(a/b);
return d;
}
int main(){
ll a,b,x,y;
cin>>a>>b;
exgcd(a,b,x,y);
cout<<(x+b)%b;
return 0;
}