zoukankan      html  css  js  c++  java
  • 继续3n+1猜想

    1  题目要求

          https://www.patest.cn/contests/pat-b-practise/1005

    2   源代码

    #include<stdio.h>
    int main(void){
        int num[101];
        int k,n,i,length;
         //初始化数组,将数组每个数都设置为-1 
         for(i=0;i<101;i++){
             num[i]=-1;
         }     
          scanf("%d",&k);//输入个数 
          
        for(i=0;i<k;i++){
            scanf("%d",&n);
            num[n]=0;//输入5,就把数组下表为5的数子设置为0,说明该数组下标被输入过 
        }
        
        /*************************************/
        
        for(i=0;i<101;i++){
            if(num[i]!=0){
                continue; //如果数组的值不为0,就不执行下面的语句,进入下一次循环。不为0的含义是:说明么牛有输入过 
            }
            n=i;  //把i赋给n
            while(n!=1){
                if(n%2==0){
                    n=n/2;
                    if(n<=100){
                        num[n]=1;
                    }
                }else{
                    n=(3*n+1)/2;
                    if(n<=100){
                        num[n]=1;
                    }
                }    
            } 
        } 
        //剩下的就是个数了 
        for(i=0,length=0;i<101;i++){
            if(num[i]==0){
                length++;
            }
        }
        //倒序输出 
         for(i=100;i>1;i--){
             if(num[i]==0){
                 length--;
             if(length!=0){
                 printf("%d ",i);
             }else{
                 printf("%d",i);
                 break;
             }
         }
         } 
    }

     3   这题其实用java反而思路清晰一些,但是用c的话可以看出底层存储的巧妙思路,这题和多项式的题目其实有点类似,巧妙的利用了数组存储

               1    定义数组,初始化数组。

               2    输出第二行数字,接收到后就将输入的数字的对应的数组下标的数组的值改为0 ,说明被输入过

               3    遍历数组了,如果数组的值不为0,则跳出循环不执行。若为0,则对其进行逻辑判断,并将每一个数子的逻辑判断得到的数组的对应的数组下标的值设置为1

               4   最后,剩下的为0的,就是要的关键数

               

  • 相关阅读:
    Spring集成XFire开发WebService
    【ASP.NET】验证控件
    中文分词——正向最大匹配法
    fastdfs storage server的设计与实现
    php浮点数精确运算
    完整导出IntelliJ IDEA的快捷键
    时空理论-结构-空间,运动-时间
    结构论-系统的结构逻辑
    结构主义理论-时空一体才是存在的本源
    分形几何学
  • 原文地址:https://www.cnblogs.com/sunnybowen/p/8663861.html
Copyright © 2011-2022 走看看