hdu-1098 Ignatius's puzzle

来源:互联网 发布:linux 局域网聊天 编辑:程序博客网 时间:2024/05/21 21:03

(数学归纳法证明)

Ignatius's puzzle

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5511    Accepted Submission(s): 3773


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
111009999
 

Sample Output
22no43
 

题目大意:f(x)=5*x^13+13*x^5+k*a*x   现输入一个k,看是否存在a 使得对任意的x都满足65|f(x).

解题思路:既然对任意的x满足,则当x=1时也满足。f(1)=(18+K*a)  ------->  (18+k*a)%65==0   又因为当a>65时,可以看成是  a=65+b 。所以只需要在1~65之间寻找a 就行

#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;int main(){    int k,a,i,j;    while(~scanf("%d",&k))    {        i=0;        for(j=1;j<=65;j++)        {            if((18+k*j)%65==0)            {                i=1;                break;            }        }        if(i)            printf("%d\n",j);        else            printf("no\n");    }    return 0;}



0 0