题目链接:https://vjudge.net/contest/326797#problem/M
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
Input
数据的第一行是一个T,表示有T组数据。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
Output
对应每组数据输出(A/B)%9973。
分析:
n可以看成A/9973的余数,所以令A=9973*k+n;由题意可知A%B=0,所以令A/B=C,此题的关键之处在于令C=p*9973+x(0<=x<=9972);
整理可得:
A=9973 * k+n=B * C=p * B * 9973+B*x;即9973* k=p* B* 9973+B*x-n;
可以推出:(B*x-n)%9973==0;
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
#define mod 9973
int main()
{
LL n,b;int T;scanf("%d",&T);
while(T--){
scanf("%lld%lld",&n,&b);
int u;
for(int i=0;i<mod;i++){
if((((b%mod)*i)%mod-n)%mod==0){u=i;break;}
}printf("%d\n",u);
}return 0;
}