跟之前那个题基本一样,拓展欧几里得的模板题。不再赘述,以下为代码
#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll k,ll &x,ll &y)
{
ll d=a;
if(k!=0)
{
d=exgcd(k,a%k,y,x);
y-=(a/k)*x;
}
else
{
x=1;
y=0;
if(a==1)return a;
else return -1;
}
return d;
}
int main()
{
ll a,k;
while(scanf("%lld%lld",&a,&k)!=EOF)
{
ll x,y;
if(exgcd(a,k,x,y)==-1)
{printf("sorry\n");
continue;}
if(x<=0)
{
x+=k;
}
y=(1-x*a)/k;
printf("%lld %lld\n",x,y);
}
}