杭电1098题

本文通过数学归纳法和二项式展开解决了一个特定的多项式整除问题,求解满足条件的未知数a的最小值。对于给定的k值,探讨了如何判断是否存在满足条件的a值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接:click here

本题一开始做脑子里什么五花八门的东西都出来了,一句话没头绪。后来静下心来想一想,貌似高中的多项式整除某个数,求参数。于是乎联想到了数学归纳法。

已知:f(x)=5*x^13+13*x^5+k*a*x,当给定k的值后,多项式中只有一个参数a了。对于任意的x都有65|f(x),求满足条件的a的最小值。如果找不到则输出no.

数学归纳法:

(1):当x=t时满足65|f(t).即:5*t^13+13*t^5+k*a*t=65M; (其中M是非负整数)

(2):当x=t+1时,f(t+1)=5*(t+1)^13+13*(t+1)^5+k*a*(t+1)

                                 =5*[c(13,0)*t^13+c(13,1)*t^12+……+c(13,12)*t+c(13,13)]+13*[c(5,0)*t^5+c(5,1)*t^4+……+c(5,4)*t+c(5,5)]+k*a*t+k*a

                                 =5*[c(13,1)*t^12)+……+c(13,12)*t]+13*[c(5,1)*t^4+……+c(5,4)*t]+(5*t^13+13*t^5+k*a*t)+(5+13+k*a)

                                =5*[c(13,1)*t^12)+……+c(13,12)*t]+13*[c(5,1)*t^4+……+c(5,4)*t]+f(t)+(18+k*a)

5*[c(13,1)*t^12)+……+c(13,12)*t]式中的每个组合系数都可以提出个13出来,所以可以整除65;

13*[c(5,1)*t^4+……+c(5,4)*t]式中每个组合系数都可以提出个5来,所以可以整除65;

由(1)式知f(t)可以整除65,

所以f(t+1)要整除65则常数项(18+k*a)必须整除65,即:(18+k*a)%65==0;

由求余的性质可知,(k*a)%65==47;即:(k%65)*(a%65)==47 ----------(*);

由(*)式可知,对于给定的k来说,k%65是一个定值,而a%65取余的结果为从0~64,每65次一循环,如果a在0~64内对65取余的结果与k%65的乘积不等于47,则找不到满足题意的a值。

代码如下:

#include<stdio.h>int main()

{   

     int k,a;

     while(scanf("%d",&k)!=EOF)   

     {       

          for(a=0;a<=64;a++)       

          {           

                if((k*a)%65==47)//数学归纳法和二项式展开,得到常数项必是65的倍数,于是得到此式         
                {

                    printf("%d\n",a);               

                    break;

                }

          }

         if(a==65)
                 printf("no\n");   

     }   

     return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值