列表

详情


BC88. 魔法数字变换

描述

有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1

输入描述

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

输出描述

输出一个整数

示例1

输入:

3

输出:

7

说明:

3->10->5->16->8->4->2->1。总共需要7步

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-06-17

#include<stdio.h>
int main()
{
    int n,count=0;
    scanf("%d",&n);
    while (n!=1)
    {
        n%2==0?(n/=2):(n=3*n+1);
        count++;
    }
    printf("%d\n",count);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-07-20

#include<stdio.h>

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

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-06-27

#include<stdio.h>
int main()
{
    int a,b=0;
    scanf("%d",&a);
    int xx=0;
    while(a!=1)
    {
        if (a%2==0)
            a=a/2;
        
        else a=a*3+1;
        
         xx=xx+1;
    }
    printf("%d\n",xx);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-06-16

#include <stdio.h>
int main()
{
    int n=0;
    int pace=0;
    scanf("%d",&n);
    for(;n!=1;)
    {
        n=(n%2==0)?(n/2):(n*3+1);
        pace++;
    }
    printf("%d",pace);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-03-21

#include <stdio.h>
int main()
{
    int n,i,count = 0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==0)
        {  n/=2;
        count++;
        }
        else
        { n = 3*n + 1;
        count++;
        }
    }
    printf("%d",count);
    return 0;
}

上一题