有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1
#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;
} #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;
} #include <stdio.h>
int main() {
int n,i=0,j=0;
scanf("%d",&n);
while(n!=1)
{
if(n%2==0)
{
n=(n/2);
i++;
}
else{
n=(3*n+1);
j++;
}
}
printf("%d",i+j);
return 0;
} 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;
}
} #include <stdio.h>
int main() {
int n = 0;
int count = 0;
stare:
scanf("%d", &n);
if(n>0&&n<=100)
{
while( n != 1 )
{
if( n % 2 ==0 )
{
n = n / 2;
}
else
{
n = n * 3 + 1;
}
count++;
}
}
else {
printf("输入n值不在0~100以内,请重新输入:");
goto stare;
}
printf("%d",count);
return 0;
} /*思路 : 分两种情况,一种是偶数,一种是奇数
但是如果是奇数的话,进行乘3然后加1操作之后
还是偶数。
使用 count 来判断 进入循环多少次 就能得出计算了几步
*/
# include <stdio.h>
int main ()
{
int n = 0;
int count = 0;
scanf("%d",&n);
while (n!=1) //当n不为1的时候就一直进行循环
//当n为1的时候退出循环
/*一旦 n 变为 1,条件 (n != 1) 不再为真,循环就会结束。*/
{
if (n%2==0) //判断偶数
{
n=n/2;
}
else //判断奇数
{
n = (3*n)+1;
}
count++;// 无论 n 是奇数还是偶数,步数都加 1
}
printf("%d",count);
return 0;
} #include <stdio.h>
int main()
{
int a = 0;
int count = 0;
scanf("%d", &a);
do
{
if (a % 2 == 0)
{
a /= 2;
count++;
}
else
{
a = a * 3 + 1;
count++;
}
} while (a != 1); //a==1时跳出循环
printf("%d\n", count);
return 0;
}