zoukankan      html  css  js  c++  java
  • 3n+1问题

    #include <stdio.h>
    #include <math.h>
    // 算法竞赛的目标是编程对任意输入均得到正确的结果。
    // 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
    // “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。
    
    /**
    【题目】3n+1问题
    猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。
    经过若干次这样的变换,一定会使n变为1。例如,3→10→5→16→8→4→2→1。
    输入n,输出变换的次数。n≤10^9(10的9次方)。
    样例输入:
    3
    样例输出:
    7
    */
    
    
    /**
    【分析】不难发现,程序完成的工作依然是重复性的:要么乘3加1,要么除以2,但这里循环的次数是不确定的,而且n也不是“递增”式的循环。这样的情况很适合
    用while循环来实现。
    */
    
    
    int main()
    {
        int n;
        int count = 0;
        scanf("%d",&n);
        while(n!=1) {
           if (n%2==1) { // 奇数
                n = 3*n + 1;
           } else {
                n = n/2;
           }
           count ++ ;
        }
    
        printf("%d
    ",count);
    
        return 0;
    }
    
    
    
    
  • 相关阅读:
    flask+Gunicorn+nginx部署
    配置Django实现数据库读写分离
    mysql分库分表
    python的反射
    flask-restful的使用
    spring源码(4)
    spring源码(3)
    spring源码(2)
    spring源码(1)
    tomcat8.5 配置数据源
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8509126.html
Copyright © 2011-2022 走看看