HDU ACM 1098 Ignatius's puzzle

分析:裴蜀定理,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; }



posted @ 2016-01-21 18:02  zfyouxi  阅读(149)  评论(0编辑  收藏  举报