这题属于数论入门题目,我看了别人的代码,有好几种思路,有扩展欧几里 德的思路,不过我觉得这种思路,我们易于想到!
思路:设A = k * 9973 + n ,A/ B = C, C = P * 9973 + x,x即为我们所求的答案。易知,A = k* 9973 + n =B * P * 9973 + B * x,化简后得k * 9973 = B * P * 9973 + B * x - n,因此(B * x - n)%9973 = 0,n的值知道,B的值知道,又因为x的取值范围是0到9972,因此枚举x的值即可,满足条件的就是答案。
这就是属于纯数学题目!只要知道到转换就很简单了,代码如下:
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int i,t,x;
scanf("%d",&t);
while(t--)
{
__int64 n,b;
scanf("%I64d%I64d",&n,&b);
for(i=0;i<9973;i++)
{
if((b*i-n)%9973==0)
{
//printf("%d\n",i);
x=i;
break;
}
}
printf("%d\n",x);
}
return 0;
}