A/B HDU-1576(简单的数论题)

Problem Description

要求(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

思路:
由题可列出:
     A=K9973+n;

    A/B=C;

    C=P9733+x;

即 x 为我们所要的答案,联立方程组可得

          K9973=BP9973+Bxn;

(BXn)%9973==0;

由于A的数据太大所以需要进行模运算,否则会超出 intintint 的范围

模运算:
       (a+b)%c==(a%c+b%c)%c;

          (ab)%c==(a%cb%c)%c;

          (ab)%c==(a%cb%c)%c;

具体运行看代码ヾ(≧O≦)〃嗷~

 1 #define N 9973
 2 #include<iostream>
 3 using namespace std;
 4 int main()
 5 {
 6     int t;
 7     cin>>t;
 8     while(t--)
 9     {
10         int n,b;
11         cin>>n>>b;
12         int i;
13         for(i=0;i<N;i++)
14         {
15             if((((b%N)*i)%N-n)%N==0)
16                 break;
17         }
18         cout<<i<<endl;
19     }
20     return 0;
21 }

 

posted @ 2019-08-13 10:34  昏后一缕阳光  阅读(243)  评论(0)    收藏  举报