首页 > 试题广场 >

魔法数字变换

[编程题]魔法数字变换
  • 热度指数:8404 时间限制: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步 
#include<stdio.h>
int main(){
    int n , i_output = 0 , i_mid_var;
    scanf("%d",&n);
    i_mid_var = n;
    while(i_mid_var != 1)
    {
        if( i_mid_var % 2 == 0 )
        {
            i_mid_var = i_mid_var / 2;
            i_output++;
        } 
        else
        {
            i_mid_var = i_mid_var * 3 + 1;
            i_output++;
        }
    }
    printf("%d",i_output);
    return 0;
}

发表于 2022-06-15 10:15:36 回复(0)
#include<stdio.h>

int main(void) {
    int a;
    int sum = 0;
    scanf("%d", &a);
    while (a != 1) {
        if (a % 2 == 1) {
            a = 3 * a + 1;
            sum++;
        } else {
            a = a / 2;
            sum++;
        }
    }

    printf("%d", sum);
    return 0;
}

发表于 2022-05-06 16:43:31 回复(0)
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int t = 0;
    while (n != 1)
    {
        if (n % 2 == 0) n >>= 1;
        else n = 3 * n + 1;
        t ++;
    }
    cout << t << endl;
}

发表于 2022-02-26 14:20:17 回复(0)
#include <stdio.h>

int main() {
    int n, count = 0;
    scanf("%d", &n);
    while (n!=1) {
        if(n%2==0){
            n/=2;
        }
        else{
            n=n*3+1;
        }
            count++;
    }
    printf("%d", count);
    return 0;
}

编辑于 2024-02-07 09:13:43 回复(0)
#include <stdio.h>

int main() 
{
    int n = 0;
    int count = 0;
    
    scanf("%d", &n);

    while(n != 1)
    {
        if(n % 2 == 0)
        {
            n /= 2;
        }
        else
        {
            n = n * 3 + 1;
        }
        count++;
    }

    printf("%d\n", count);
    
    return 0;
}

编辑于 2024-04-05 21:52:25 回复(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)
#include <stdio.h>

int main() {
    int n, tag=0;
    scanf("%d", &n);
    while(n != 1){
        if(n%2==0){
            n /= 2;
        }else{
            n *= 3;
            n++;
        }
        tag++;
    }
    printf("%d", tag);
    return 0;
}
发表于 2024-01-20 10:57:59 回复(0)
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    var cnt = 0
    for n != 1 {
        cnt++
        if n&1 == 0 {
            n /= 2
            continue
        } 
        n = n * 3 + 1
    }
    fmt.Println(cnt)
}
发表于 2023-12-20 02:46:05 回复(0)
 
#include <stdio.h>
int main()
{
    int n=0;
    int i=0;
    scanf("%d",&n);
    while (n!=1)
    {
        if(n%2==0)
        {
          n/=2;
          i++;
        }
        else
        {
          n=n*3+1;
          i++;
        }
    }
    printf("%d",i);
}//帅哥写的代码

发表于 2023-12-10 14:54:00 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    int i = 0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==0)
        n/=2;
        else
        n=3*n+1;
        i++;
    }
    printf("%d",i);
    return 0;
}
发表于 2023-12-10 14:11:51 回复(0)
#include <stdio.h>

int main()
{
    int n =0;
    int i =0;
    int count = 0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==0)
        {
            n= n/2;
        }
        else 
        {
            n = n*3+1;
        }
        count++;
    }
    printf("%d\n",count);
    return 0;
}

发表于 2023-11-07 21:41:14 回复(0)
#include <stdio.h>

int main()
{
    int n=0;
    int count=0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==1)
        {
            n=n*3+1;
            count++;
        }
        else
        {
            n=n/2;
            count++;
        }
    }
    printf("%d",count);
    return 0;
}
发表于 2023-10-29 20:22:24 回复(0)
#include <iostream>
using namespace std;

int main() {
    int n,a=0,b=0;
    cin>>n;
    while(1){
        if(n%2==0){
            n=n/2; 
        }
        else n=n*3+1;
        a++;
        if(n==1)
        break;
    }
    printf("%d",a);
}

发表于 2023-10-05 16:46:45 回复(0)
#include <stdio.h>

int main() 
{
    int n = 0;
    scanf("%d", &n);
    int count = 0;
    while(n!=1)
    {
        if(n%2==0)
        {
            n = n/2;
            count++;
        }    
        else 
        {
            n = 3*n + 1;
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

发表于 2023-08-30 00:08:41 回复(0)
#include <math.h>
#include <stdio.h>
int main() {
    int sum=0,n;
    scanf("%d",&n);
    while (n!=1) {
       if(n%2==0) {
        n=n/2;
        sum++;
    }
    else {
      n=n*3+1;
      sum++;
    }
    /*if (n==1) {
       break;
    }*/
    }
    printf("%d",sum);
    return 0;
}
发表于 2023-08-12 10:45:18 回复(0)
a = int(input())
b = 0
while True:
    b += 1
    if a / 2 != 1:
        if a % 2 != 0:
            a = a*3 + 1
        else:
            a = a/2
    else:
        break
print(b)
发表于 2023-07-31 11:44:06 回复(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)
#include <stdio.h>
int main()
 {
     int n = 0,count = 0;
     scanf("%d",&n);
     while(n !=1)
     {
       if(n % 2 == 0)
     {
         n = n/2;
     }
     else {
          n = n * 3 + 1;
     }
          count++;
     }
   printf("%d\n",count);
    return 0;
}

发表于 2023-06-27 13:57:52 回复(0)
#include <stdio.h>

int main() {
    int n = 0;
    scanf("%d", &n);
    int count = 0;
    while(n>0){
        if(n%2==0){
            n/=2;
        }else {
            n= (n*3) + 1;
        }
        count++;
        if (n==1) {
            break;
        }
    }
    printf("%d\n",count);
    return 0;
}

发表于 2023-06-24 18:42:24 回复(0)
#include <stdio.h>

int main() {
    int a = 0;
    int count =0;
    scanf("%d",&a);
    while(a!=1)
    {
    if(a%2 == 0)
    {
        a = a/2;
        count++;
    }
    else
    {
        a = a*3+1;
        count++;
    }
    }
    printf("%d",count);
    return 0;
}
发表于 2023-05-28 10:56:57 回复(0)