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);
}
}