分析:裴蜀定理,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
原文地址:http://blog.csdn.net/a809146548/article/details/46349511