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;
}

浙公网安备 33010602011771号