要求(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。
Sample Input
2 1000 53 87 123456789
Sample Output
7922 6060
费马小定理也是由同余定理演变而来。
分析:已知 n = A % mod;
(A/B)%mod = A*mul(B,mod-2);(mul表示快速幂求B的mod-2 次方)
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
const ll mod = 9973;
ll mul(ll x,ll y)
{
ll res = 1;
while(y)
{
if(y&1)
res = (res*x)%mod;
x = (x*x)%mod;
y>>=1;
}
return res%mod;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll temp = mul(b%mod,mod-2);
printf("%lld\n",(a*temp)%mod );
}
return 0;
}