码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 1098 Ignatius's puzzle

时间:2015-06-03 19:39:23      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

分析:裴蜀定理,a,b互质的充要条件是存在整数x,y使ax+by=1。存在整数x,y,使得ax+by=c,那么c就是a,b的公约数。
假设存在数a ,因为对任意x方程都成立,则有当x=1时f(x)=18+ka;有因为f(x)能被65整除,所以f(x)=n*65。即18+ka=n*65有整数解则说明假设成立。

ax+by = c的方程有整数解的一个充要条件是:c%gcd(a, b) == 0。然后枚举直到(65*n-18)%k == 0。

#include<iostream>
using namespace std;

int gcd(int a,int b)
{
	return b?gcd(b,a%b):a;
}

bool judge(int a,int b)                  //65*n-k*a=18==>[65*n+k*(-a)=18]
{
	return 18%gcd(a,b)==0;
}

int main()      
{
	int m,i;

	while(scanf("%d",&m)==1)
	{
		if(judge(65,m))
		{
			for(i=1;;i++)
				if((i*65-18)%m==0)
				{
					printf("%d\n",(i*65-18)/m);
					break;
				}
		}
		else puts("no");
	}
    return 0;      
}


HDU ACM 1098 Ignatius's puzzle

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/46349511

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