hdu1098(数学归纳法)

http://acm.hdu.edu.cn/showproblem.php?pid=1098

有一个函数:  f(x)=5*x^13+13*x^5+k*a*x
给定一个非负的 k 值     求最小的非负的 a 值   使得对任意的整数x都能使
 f(x) 被   65 整除。

每输入一个k 值 , 对应输出一个 a值  ,  若不存在a值 则输出 no


数学归纳法证明:
1.假设当x=n时,f(n)=........%65==0成立
则只需要证明f(n+1)=5(n+1)^13+13(x+1)^5+k*a*(x+1)%65==0成立即可
将f(x+1)用二项式分解,会发现5(n+1)^13+13(x+1)^5一定能被%65==0.
用f(x+1)-f(x),会发现,只有18+ka不能确定是否能%65==0;又因(18+ka)%65=(18%65+(k%65)*(a%65))%65,由此可以确定0<a<=65;即将65做为一个周期。

代码:

#include<iostream>
using namespace std;
int main()
{
	int a,k,i;
	while(scanf("%d",&k)>0)
	{
		a=0;
		for(i=1;i<=65;i++)
			if((k*i+18)%65==0)
			{
				a=i;
				break;
			}
		if(a==0)
			printf("no\n");
		else
			printf("%d\n",a);
	}
	return 0;
}
 

 

posted @ 2012-11-23 13:10  紫忆  阅读(283)  评论(0编辑  收藏  举报