首页 > 试题广场 >

魔法数字变换

[编程题]魔法数字变换
  • 热度指数:13997 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1


输入描述:
输入一个正整数n,范围在100以内


输出描述:
输出一个整数
示例1

输入

3

输出

7

说明

3->10->5->16->8->4->2->1。总共需要7步 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.close();

        int steps = magic(n);
        System.out.println(steps);
    }

    public static int magic(int n) {
        int tmp = n;
        int count = 0;
        while (tmp >= 1) {
            if (tmp == 1) {
                break;
            }
            if (tmp % 2 == 0) {
                tmp = tmp / 2;
                count++;
            } else {
                tmp = tmp * 3 + 1;
                count++;
            }
        }
        return count;
    }
}

发表于 2024-08-07 16:06:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int step = 0;
        while(a!=1) {
            a = a%2==0? a/2 :a*3+1;
            step++;
        }
        System.out.println(step);
    }
}

编辑于 2024-03-01 11:23:29 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
           int count=0;//计数器
           while(a!=1){ 
           if(a%2==0){
            a/=2;
            count++;
           }
           else if(a%2!=0){
            a=a*3+1;
            count++;
                }
            }
            System.out.println(count);
        }
    }
}

发表于 2023-07-29 17:49:30 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int count = 0;
        while (n != 1) {
            if (n % 2 == 0) {
                n = n / 2;
                count++;
            } else if (n % 2 == 1) {
                n = 3 * n + 1;
                count++;
            }
        }
        System.out.println(count);
    }
}

发表于 2022-10-30 17:08:22 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int count=0;
        while(n!=1){
            if(n%2==0) n/=2;
            else n=n*3+1;
            count++;
        }
        System.out.print(count);
    }
}

发表于 2022-07-25 23:18:13 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] arg) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = 0;
        if (n == 1) {
            System.out.println(3);
        }
        for (int i = 0; i <= 1000; i++) {
            if (n == 1) {
                break;
            } else if (n % 2 == 0) {
                n = n / 2;
            } else {
                n = n * 3 + 1;
            }
            m++;
        }
        System.out.println(m);
    }
}

发表于 2022-07-01 17:36:33 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int num = scanner.nextInt();
            int count = 0;
            while(num != 1){
                if(num % 2 == 0){
                    num = num / 2;
                }else{
                    num =  num * 3 + 1;
                }
                count++;
            }
            System.out.println(count);
        }
    }
}

发表于 2022-06-28 10:46:54 回复(0)
import java.util.*;
public class Main{
    public static void main(String love[]){
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int flag=0;
        while(n!=1){
            if(n%2==0){
                n=n/2;
            }
            else
            {
                n=3*n+1;
            }
            flag++;
        }
        System.out.print(flag);
        input.close();
    }
}

发表于 2022-05-08 15:45:50 回复(0)

问题信息

上传者:牛客301599号
难度:
8条回答 4025浏览

热门推荐

通过挑战的用户

查看代码
魔法数字变换