Ignatius's puzzleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11549 Accepted Submission(s): 8107 http://acm.hdu.edu.cn/showproblem.php?pid=1098 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 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 |
题意:
给定一个k,找到最小的a 使得 f(x)=5*x^13+13*x^5+k*a*x ,f(x)%65永远等于0。
思路:
只要求出18+k*a能被65整除就可以了。
18+k*a=65*b
ax+by = c的方程有解的一个充要条件是:c%gcd(a, b) == 0
代码:
#include<iostream>
using namespace std;
int gcd(int a,int b)
{
return a==0?b:gcd(b%a,a);
}
int main()
{
int k,a;
while(cin>>k)
{
if(18%gcd(65,k)==0)
{
for(a=0;;a++)
{
if((18+k*a)%65==0)
{
cout<<a<<endl;
break;
}
}
}
else
cout<<"no"<<endl;
}
return 0;
}