首页 > 其他 > 详细

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

时间:2019-08-13 11:13:14      阅读:60      评论:0      收藏:0      [点我收藏+]

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 }

 

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

原文:https://www.cnblogs.com/dwj-2019/p/11344364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!