zoukankan      html  css  js  c++  java
  • java实现角谷步数

    你听说过角谷猜想吗?
    任意的正整数,比如 5, 我们从它开始,如下规则计算:
    如果是偶数,则除以2,如果是奇数,则乘以3再加1.
    如此循环,最终必会得到“1” !

    比如 5 的处理过程是:
    5
    16
    8
    4
    2
    1

    一个正整数经过多少步才能变成1, 称为角谷步数。
    对于5而言,步数也是5
    对于1,步数为0

    本题的要求是,从标准输入给定一个整数n(1<n<300)表示角谷步数
    求满足这个角谷步数的最小的正整数

    例如:

    输入:
    3
    则输出:
    8

    输入:
    4
    则输出:
    16

    输入:
    7
    则输出:
    3

    package com.liu.ex5;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
        public static ArrayList<Integer> list = new ArrayList<Integer>();
        
        public void getResult() {
            list.add(0);
            for(int i = 1;i <= 300000;i++) {
                int tempi = i;
                int count = 0;
                while(tempi > 1) {
                    if(tempi % 2 == 0) {
                        tempi = tempi / 2;
                        count++;
                    } else {
                        tempi = tempi * 3 + 1;
                        count++;
                    }
                }
                list.add(count);
            }
            return;
        }
        
        public void printResult(int n) {
            getResult();
            int result = list.indexOf(n);
            System.out.println(result);
            return;
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            test.printResult(n);
        }
    }
    
  • 相关阅读:
    Block编程
    自己写Web服务器(续)
    C# 2.0对现有语法的改进
    使用CDN
    优化网站设计(一):减少请求数
    MongoDB Shell的使用
    memcache 和appfabric
    go语言中几个有趣的特性以及对go的看法
    bpm流程平台
    Socket编程 (异步通讯) (Tcp,Udp)Part2
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077853.html
Copyright © 2011-2022 走看看