65|f(x) 表示是f(x)能被65整除。
思路:
则f(x+1 ) = f (x) + 5*( (13 1 ) x^12 ...... .....+(13 13) x^0 )+ 13*( (5 1 )x^4+...........+ ( 5 5 )x^0 )+k*a;
很容易证明,除了5*(13 13) x^0 、13*( 5 5 )x^0 和k*a三项以外,其余各项都能被65整除. 且 f(1)=18+k*a
那么也只要求出18+k*a能被65整除就可以了.
由 18+ka=n*65 得 k*a+65*n = 18 (n,a ∈ N*)
ax+by = c 方程有解的一个充要条件是:c % gcd(a, b) == 0。
然后枚举直到65*n-18%k == 0为止。
#include <cstdio>
int gcd(int n, int m)
{
while (m) {
int t = m;
m = n % m;
n = t;
}
return n;
}
bool exans(int c, int a, int b)
{
return c % gcd(a, b) == 0;
}
int main()
{
int k;
while (scanf("%d", &k) != EOF) {
if (!exans(18, 65, k))
puts("no");
else {
int i = 1;
while ((65 * i - 18) % k)
++i;
printf("%d\n", (65 * i - 18) / k);
}
}
}