码迷,mamicode.com
首页 > 编程语言 > 详细

hdu 1576 A/B 欧几里德算法的扩展

时间:2015-03-31 20:14:15      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:hdu1576   ab   数论   

A/B

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2580    Accepted Submission(s): 1884


Problem Description
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
 

Input
数据的第一行是一个T,表示有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
 

Author
xhd
 一个数论题目 
欧几里德扩展运算 
n=A%9973  就有 n=A-9973*r 
A%B==0         A=l*B 
(A/B)%9973   ans= l%9973 
所以有 ans=l-m*9973 
其中ans就是我们需要的答案 
A=L*B=n+9973*r=B*(ans+m*9973) 
n+9973*r=B*ans+9973*m*B 
n-B*ans=(m*B-r)*9973 
所以只要枚举(n-B*ans)%9973==0 就可以了 

代码:
#include <stdio.h>

int main()
{
	int t ;
	scanf("%d",&t) ;
	while(t--)
	{
		long long n , b ;
		scanf("%I64d%I64d",&n,&b) ;
		for(int i = 0 ; i < 9973 ; ++i)
		{
			if((n-b*i)%9973 == 0)
			{
				printf("%d\n",i) ;
				break ;
			}
		}
	}
	return 0 ;
}

与君共勉

hdu 1576 A/B 欧几里德算法的扩展

标签:hdu1576   ab   数论   

原文地址:http://blog.csdn.net/lionel_d/article/details/44782933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!