[java]
/*
*f(x)=5*x^13+13*x^5+k*a*x
*要使f(x)被65整除f(x)肯定為整數,—-》x為整數!=0
*f(x+1)=5*(x+1)^13+13*(x+1)^5+k*a*(x+1),將f(x+1)按二項式定理展開有:
*f(x+1)=5*(c(13,0)*x^13+c(13,1)*x^12+c(13,2)*x^11+….+c(13,12)*x+c(13,13)*x^0)+
* 13*(c(5,0)*x^5+c(5,1)*x^4+…..+c(5,4)*x^1+c(5,5)*x^0)+k*a*(x+1)
*由於c(13,1)…c(13,12)中間一定可以提取一個13,則有這些項*5之後一定可以被65整除
* 同理c(5,1)…c(5,4)一定可以提取一個5,則有這些項*13之後一定可以被65整除
*所以:f(x+1)=5*(c(13,0)*x^13+c(13,13)*x^0)+13*(c(5,0)*x^5+c(5,5)*x^0)+k*a*(x+1)
*隻需要k*a*(x+1)能被65整除
*即k*a*x能被65整除
*要想取a最小值,x要取最小1或者-1.
*所以隻需要18+k*a或者-18-k*a能被65整除。
*要使(18+k*a)%65==0
*k*a肯定為65的倍數-18=47
*而k最小為1.所以a最大為65 就可以瞭。
* */
import java.util.Scanner;
public class HDU1098 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k;
while (sc.hasNext()) {
k = sc.nextInt();
int flag = 0;
for (int i = 1; i < 66; i++) {
if (( k * i) % 65 == 47) {//或者if ((18 + k * i) % 65 == 0)
System.out.println(i);
flag = 1;
break;
}
}
if (flag == 0)
System.out.println("no");
}
}
}
作者:lhfight