题目:求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。数据给出n和b
推导过程
A/B = K
K = 9973*P + X
A = 9973*Q + N
得:
(9973*Q + N)/B = K = 9973*P + X
9973*Q = 9973*P*B + X*B - N
9973*(Q - P*B) = X*B - N
( X*B — N) %9973 = 0
也有看到用扩展欧几里得算法去做的
#include<iostream>
using namespace std;
int main()
{
int T;
__int64 n, b;
cin>>T;
while (T--)
{
scanf("%I64d%I64d", &n, &b);
for (int i = 0; i<9973; i++)
{
if ((b * i - n) % 9973 == 0)
{
cout<<i<<endl;
break;
}
}
}
return 0;
}
HDU 1576 A/B(数论)
最新推荐文章于 2024-07-16 18:11:29 发布