7-10 3n+1
分数 10
作者 翁恺
单位 浙江大学
有这样一个猜想:对于任意大于1的自然数n,若n为奇数,则将n变成3n+1,否则变成n的一半。经过若干次这样的变换,一定会使n变为1。例如3->10->5->16->8->4->2->1。对于n=1的情况,当然就不用变化了。
输入格式:
输入一个正整数n,n的范围是[1,999999]。
输出格式:
输出变换的次数。
输入样例:
3
输出样例:
7
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题思路:
题目要求输入一个正整数n,对于任意大于1的自然数n,若n为奇数,则将n变成3n+1,否则变成n的一半。经过若干次这样的变换,一定会使n变为1。求变换的次数。
那么根据题目要求,n等于1的时候不处理数据,n为奇数即n%2!=0时n=3n+1,n为偶数即n%2==0时n=n/2.
代码实现:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
for(int i=0;i>=0;i++){
if(n==1){
System.out.println(i);
break;
}
if(n%2!=0) n=3*n+1;
else n=n/2;
}
}
}