风言枫语  
题目:求(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;
}


posted on 2013-08-25 21:50  风言枫语  阅读(188)  评论(0编辑  收藏  举报