数论 C - A/B

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。

Sample Input

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;
}
 

posted on 2020-01-14 15:27  Aminers  阅读(220)  评论(0编辑  收藏  举报

导航