11 100 9999
22 no 43
解题思路:
给定一个k,找到最小的a 使得 f(x)=5*x^13+13*x^5+k*a*x ,f(x)%65永远等于0
因为 f(x+1)=5*(x+1)^13+13*(x+1)^5+k*a*x,所以 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整除.那么也只要求出18+k*a能被65整除就可以了。
18+k*a=65*b
ax+by = c的方程有解的一个充要条件是:c%gcd(a, b) == 0
#include <iostream> #include <cstdio> using namespace std; int gcd(int a,int b){ return b>0?gcd(b,a%b):a; } int main(){ int k; while(scanf("%d",&k)!=EOF){ if(18%gcd(k,65)==0){ for(int a=0;;a++){ if( (18+k*a)%65==0 ){ printf("%d\n",a); break; } } } else printf("no\n"); } return 0; }
HDU 1098 Ignatius's puzzle(数论-其它),布布扣,bubuko.com
HDU 1098 Ignatius's puzzle(数论-其它)
原文:http://blog.csdn.net/a1061747415/article/details/38384605