• 继续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的,就是要的关键数

               

  • 相关阅读:
    如何消除一个数组里面重复的元素?
    行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
    简述一下src与href的区别
    请说出三种减少页面加载时间的方法
    SQL大全
    11.Hibernate 拦截器
    10.Hibernate 批处理
    9.Hibernate 缓存
    8.Hibernate 原生 SQL
    7.Hibernate 标准查询
  • 原文地址:https://www.cnblogs.com/sunnybowen/p/8663861.html
Copyright © 2020-2023  润新知