http://acm.hdu.edu.cn/showproblem.php?pid=1576
分析:
A%9973=n
即:A≡n(mod9973)
即:Bx≡n(mod9973)
即:Bx1+9973*y1=1
#include<iostream>
#include<cstdio>
using namespace std;
const int N=9973;
__int64 x,y,r;
void EX_Eulid(__int64 a,__int64 b)
{
if(b==0)
{
x=1;y=0;r=a;
}
else
{
EX_Eulid(b,a%b);
int t=x;
x=y;
y=t-a/b*y;
}
}
int main()
{
__int64 n,B,T;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d%I64d",&n,&B);
EX_Eulid(B,N);
x=x*n;
printf("%I64d\n",(x%N+N)%N);
}
return 0;
}
还可以直接暴力
#include<iostream>
using namespace std;
int main()
{
__int64 N,M,T,i,num;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d%I64d",&N,&M);
for(i=9973/M;;i++)
{
num=i*M;
if(num%9973==N)
break;
}
num=(num/M)%9973;
printf("%I64d\n",num);
}
return 0;
}