版权声明:反正也没有人会转,下一个 https://blog.csdn.net/drtlstf/article/details/81705055
Description
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
Input
数据的第一行是一个T(1<=T<=1,000,000),表示有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
扩展欧几里得......
#include <iostream>
using namespace std;
int x, y;
void gcd(int a, int b) // 扩展欧几里得.
{
int t;
if (b)
{
gcd(b, a % b);
t = x;
x = y;
y = t - (a / b) * y;
}
else
{
x = 1;
y = 0;
}
return;
}
int main(void)
{
int a, b;
scanf("%d", &a); // 化(tou)简(lan).
while (~scanf("%d%d", &a, &b))
{
gcd(b, 9973);
printf("%d\n", (x + 9973) * a % 9973); // 化简*2
}
return 0;
}