zoukankan      html  css  js  c++  java
  • HDUOJ-----1098 Ignatius's puzzle

    Ignatius's puzzle

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5035    Accepted Submission(s): 3426

    Problem Description
    Ignatius is poor at math,he falls across a puzzle problem,so he has no choice but to appeal to Eddy. this problem describes that:f(x)=5*x^13+13*x^5+k*a*x,input a nonegative integer k(k<10000),to find the minimal nonegative integer a,make the arbitrary integer x ,65|f(x)if no exists that a,then print "no".
     
    Input
    The input contains several test cases. Each test case consists of a nonegative integer k, More details in the Sample Input.
     
    Output
    The output contains a string "no",if you can't find a,or you should output a line contains the a.More details in the Sample Output.
     
    Sample Input
    11 100 9999
     
    Sample Output
    22 no 43
     
    Author
    eddy
     
     
     
     
     
     
     
     
     
     
    这道题,如果能够在高中的时候,很定能够求出来的..
     
      对于           F(x)=5*x^13+13*x^5+k*a*x;
      数学归纳如下:
                                  当x=1时,F(1)=5+13+k*a (此时需要找一个a使得,条件成立)。
                               假设  当x=k时,其成立;
                                 当.x=k+1时,也应当成立。但实际上5*(x+1)^13+13*(x+1)^5+k*a*(x+1);
                         展开之后                 0                     13 
                                               5*(C  *x^13.........C *x^0)+13*(.....同前头.....)+k*a*x + k*a ;
                                                           13                    13                  
                 最后我5*x^13+13*x^5+kax +5+13+ka  +后面部分(由于是65的倍数,就不讲啦)....由于当x=xs十,条件是成立的....所以最后只需要将(13+5+ka)%65
                等于0就行了!!而a必须小于65,不然就没有意义了!!试想a如果是65的倍数的话....那么F(x+1)处,便放到后头省掉了...
    由此就不难写出代码了!!
    代码如下:
                     
     1 #include<iostream>
     2 using namespace std;
     3 int main( void )
     4 {
     5     int k,a;
     6     while(cin>>k)
     7     {
     8         a=0;
     9       for(int i=1;i<65;i++)
    10       {
    11           if((18+i*k)%65==0)
    12           {  a=i;
    13              break;
    14           }
    15       }
    16       if(a)cout<<a<<endl;
    17       else cout<<"no"<<endl;
    18        
    19     }
    20     return 0;
    21 }
    View Code
     
  • 相关阅读:
    Android Context 上下文 你必须知道的一切
    Delphi:对TNotifyEvent的理解
    vagrant启动报错The following SSH command responded with a no
    virtualbox命令行共享CentOS目录
    一些Linux命令
    PHP实现单例模式
    maven+springMVC+mybatis+easyUI管理用户增删改查
    Project Euler:Problem 77 Prime summations
    spring 获取对象方式
    linux命令之man和info
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3211992.html
Copyright © 2011-2022 走看看