HDOJ 1576. A/B
题目:1576. A/B
问题描述:
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
输入:
数据的第一行是一个T,表示有T组数据。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
输出:
对应每组数据输出(A/B)%9973。
样本输入:
2
1000 53
87 123456789
样本输出:
7922
6060
方法:扩展欧几里得
思路:令m = 9973,inv(a)表示a关于m的逆元,根据题意可得 (A / B) % m = ((n + k * m) * inv(B)) % m = ((n + k * m) % m) * (inv(B) % m) = (n % MOD) * (inv(B) % MOD) = n * inv(B) % m。所以只需求n * inv(B) % m的值即可。本题使用扩展欧几里得求逆元。
运行数据:执行用时:249MS,内存消耗:9316K
1 | import java.util.Scanner; |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!