Ignatius's puzzle hdu-1098

来源:互联网 发布:淘宝网武笙缘太极服 编辑:程序博客网 时间:2024/05/17 05:12

Problem Description
Ignatius is poor at math,he falls across a puzzle problem,so he has no choice but to appeal to Eddy. this problem describes that:f(x)=5*x^13+13*x^5+k*a*x,input a nonegative integer k(k<10000),to find the minimal nonegative integer a,make the arbitrary integer x ,65|f(x)if
no exists that a,then print “no”.

Input
The input contains several test cases. Each test case consists of a nonegative integer k, More details in the Sample Input.

Output
The output contains a string “no”,if you can’t find a,or you should output a line contains the a.More details in the Sample Output.

Sample Input
11
100
9999

Sample Output
22
no
43



题目大意:
求是否存在一个a使得任意一个x从而使表达式的值能整除65

Ps: 65|f(x) 的意思是f(x)%65==0


由题意
f(1)= 18+k*a;
数学归纳法可得:
f(x)%65==0
f(x+1)%65==0
则有(f(x+1)-f(x))%65==0;
由泰勒展开式,发现 13*[ ]+ 5*[ ] 的项可以被65整除,所以只需要讨论最后的k*a+18即可;


附上代码

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;int main(){    int k;    while(scanf("%d",&k)!=EOF)    {               int flag=-1;        for(int a=1;a<=100;a++)        {            int ans = 18+a*k;            if(ans%65==0)            {                flag=a;                break;            }        }        if(flag>65||flag==-1)            printf("no\n");        else            printf("%d\n",flag);    }}
原创粉丝点击