有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1
输入一个正整数n,范围在100以内
输出一个整数
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; }
#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; }
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); } }
#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); }//帅哥写的代码
#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; }
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); } } }