HDU 1098 Ignatius's puzzle(数学归纳)

以下引用自http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=8466&messageid=2&deep=1

题意以及简单证明
Posted by hncu1106101-王志盼 at 2012-10-19 16:35:42 on Problem 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<stdio.h>
#include<string.h>
int main()
{
    int k,i,f;
    while(scanf("%d",&k)!=EOF)
    {
        f=0;
        for(i=1;i<66;i++)
        {
            if((18+k*i)%65==0)
            {
                printf("%d\n",i);
                f=1;
                break;
            }
        }
        if(f==0)
            printf("no\n");
    }
    return 0;
}
View Code

这题重点在引用来的神奇的证明思维

 

posted @ 2013-08-01 21:00  laiba2004  Views(171)  Comments(0Edit  收藏  举报