Hdu-1098解題報告
Hdu-1098解題報告
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1098
題意:已知存在一個等式f(x)=5*x^13+13*x^5+k*a*x,輸入一個正整數k(K<1000),要我們找出一個最小的正整數a 使得任意的整數x,滿足f(x)%65等於0。如果整數a 不存在,則輸出“no”,存在的話就輸出a。
思路:采用特值法:當x=1時,f(x)=18+k*a;要使f(x)%65=0,所以只要在1-65的範圍內有一個a滿足(18+k*a)%65=0這個條件,即可證明a存在。同時註意a的範圍是在0-65間,因為如果a>65後,(18+a*k)%65以65為周期,如果a=66,(18+66*k)%65的效果與(18+1*k)%65的效果一樣;
#include<stdio.h>
int main()
{
int k,i;
while(~scanf("%d",&k))
{
for(a=0;a<=65;a++)///////////////////////////此處應搞懂是為什麽
{
if((18+a*k)%65==0)
{
printf("%d\n",a);
break;
}
}
if(a>=66)
printf("no\n");
}
return 0;
}
2018-04-13
Hdu-1098解題報告