zoukankan      html  css  js  c++  java
  • HDOJ 1098 Ignatius's puzzle (数论)

    //http://acm.hdu.edu.cn/showproblem.php?pid=1098
    /*
    
    题目说x任意,于是取x=1,
    公式变为f(x)=5+13+k*a
    然后从小到大枚举a,满足f(x)%65==0即输出,
    枚举a为1到64,因为a>=65时可简化为 65+i,65可以约去
    
    
    有一个函数:  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做为一个周期。
    */

    //代码1
    
    #include<iostream>
    using namespace std;
    
    int main()
    {
    
        int n,i;
        while(scanf("%d",&n)!=EOF)
        {
            int a = 0;
            for(i=1;i<65;i++)
            {
                if((18+n*i)%65 == 0)
                {
                    a = i;
                    break;
                }
            }
            if(a)        printf("%d
    ",a);
            else        printf("no
    ");
        }
        return 0;
    }
    
    
    #include <iostream>
    #include <cmath>
    using namespace std;
    int exgcd( int a, int b ,int &x, int &y)
    {
    
         if( b == 0)
    
          {
    
               x = 1; y = 0; return a;
    
         }
    
         int d = exgcd( b, a % b, x , y);
    
         int temp = x;
    
          x = y; y = temp - (a / b) * y;
    
         return d;
    
    }
    int main()
    {
       int k;
       while(scanf("%d",&k)==1)
       {
            int a,b,d,t;
    d=exgcd(65,k,b,a);
    
    a=a/d*18;b=65/d;
    if (18%d)
    printf("no
    ");
    else printf("%d
    ",abs((a%b+b)%b-b));
       }
       return 0;
    }
     
  • 相关阅读:
    [Swift]LeetCode300. 最长上升子序列 | Longest Increasing Subsequence
    备忘录模式之C++实现
    leecode 题解 || Merge k Sorted Lists 问题
    数学三大危机
    singlefile.py
    Data Url生成工具之HTML5 FileReader实现
    算法题:打印1到最大的n位数
    java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils
    hdu 1181 变形课
    postgis经常使用函数介绍(一)
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3383054.html
Copyright © 2011-2022 走看看