hdu 1098

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 ;

}
View Code

 

你可能感兴趣的:(HDU)