HDU1098-Ignatius's puzzle

4 篇文章 0 订阅

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098

问题解析:

  数学归纳法

  f(1) = 18 + ka;

  假设f(x) = 5*x^13+13*x^5+k*a*x 能被65整除 

  f(x+1) = 5*(x+1)^13+13*(x+1)^5+k*a*(x+1)

  根据二项式定理展开 (a+b)^n = C(n,0)*a^n*b^0 + C(n,1)*a^(n-1)*b^1 + C(n,2)*a^(n-2)*b^2 + ... + C(n,n)*a^0*b^n

  f(x+1) = 5 * (x^13 + C(13,1)*x^12 + C(13,2)*x^11 + ... + C(13,13)) + 13 * (x^5 + C(5,1)*x^4 + .. + C(5,5)) + k*x*a + ka;

  补充:组合数性质 C(n, m) (m < n) 如果n为质数 则C(n, m)能被n整除。 

  证明:

    C(n, m) = n! / (m! * (n-m)!) = (n-m+1) * (n-m+2) * ... * n / m!

    m = 1: C(n, m) = n; C(n, m) % n = 0;

    1 < m < n: 因为C(n, m)为整数,n为质数,m!为合数,n / m! 不是整数,进而(n-m+1) * (n-m+2) * ... * (n-1) / m!必为整数,所以C(n, m)能被n整除。

  证毕。

  化简 : f(x+1) = 5*x^13 + 5*13*g(x) + 5 + 13*x^5 + 13*5*h(x) + 13 + k*x*a + ka;

        = f(x) + 65*g(x) + 65*h(x) + 18 + ka;

  只要证明 18 + ka 能被65整除。

  又因为(a + b) mod m = (a mod m + b mod m) mod m

  所以只要证明 ka 能被 47 整除。

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值