HDU 1098 Ignatius's puzzle(数论)

Description
已知f(x)=5*x^13+13*x^5+k*a*x,现给出一个数k,是否存在一个数a,对任意x都能使得f(x)能被65整出,如果存在输出a,否则输出no
Input
多组输入,每组用例占一行为一整数k,以文件尾结束输入
Output
对于每组用例,如果存在满足条件的a则输出a,否则输出no
Sample Input
11
100
9999
Sample Output
22
no
43
Solution
用数学归纳法证明:如果f(x)能够被65整除,那么f(x+1)也能够被65整除
HDU 1098 Ignatius's puzzle(数论)_第1张图片
因为5和13都是素数,所以C(5,i)和C(13,i)一定能分别被5和13整除,所以f(x+1)-f(x)的前半部分一定可以被13整除,只要后半部分18+ka能被65整除即可,我们只需枚举a的值看(18+ka)%65是否为0,如果当a的值已经超过65还不能整除说明无解,否则有解
Code

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int k,i;
    while(scanf("%d",&k)!=EOF)
    {
        for(i=1;i<66;i++)
            if((18+i*k)%65==0)
                break;
        if(i==66)
            printf("no\n");
        else
            printf("%d\n",i);
    }
}

你可能感兴趣的:(HDU 1098 Ignatius's puzzle(数论))