您的位置:首页 > 其它

HDU 1576 A/B(数论)

2013-08-25 21:50 204 查看
题目:求(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: