http://acm.hdu.edu.cn/showproblem.php?pid=1098
假设x=m时,65|f(m),即65|5*m^13+13*m^5+k*a*m
计算f(m+1)=(5*m^13+13*m^5+k*a*m)+65*(m^12+6*m^11+22*m^10+55*m^9+99*m^8+132*m^7+132*m^6+99*m^5+56*m^4+24*m^3+8*m^2+2*m)+(18+k*a)
式子的前两部分显然能被65整除,此时如果65|(18+k*a),那么65|f(m+1)。
同时观察到f(1)=18+k*a,所以如果65|f(1),则65|f(m+1),此时对于所有x>1,65|f(x)均成立
这样问题就转化到是否存在a使得65|(18+k*a),我们从1-64进行枚举,先找到满足条件的a必定是最小的,符合题目要求,均不成立则输出"no"
#include <iostream> using namespace std ; int main() { int k ; while(~scanf("%d",&k)) { int a=0 ; for(int i=1 ;i<65 ;i++) { if((18+k*i)%65==0) { a=i ; break ; } } if(!a) puts("no") ; else printf("%d\n",a) ; } return 0 ; }