数论 C - A/B
要求(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。
2 1000 53 87 123456789
Sample Output
7922 6060
题目描述:
B能整除A,B与9973互质,给出n=A%9973,求(A/B)%9973。
分析:
有(A/B)%m的形式,可换成A%m*(B^-1)%m,题目已经给出A%m=n了,只要用费曼小定理求出(B^-1)%m就行。(B^-1)%m=(B^(m-2))%m,把m=9973带进去即可。
代码:
#include<iostream> #include<algorithm> using namespace std; typedef long long ll; int main() { int T; scanf("%d",&T); while(T--) { ll n,B; scanf("%lld %lld",&n,&B); ll a=1; for(int i=0;i<9971;i++) { a=a%9973*B; } cout<<(a%9973*n)%9973<<'\n'; } return 0; }