题目链接
题目描述
卡拉兹函数(Collatz function)的定义如下:
给定一个正整数 n
,
- 若
n
为偶数,则f(n) = n / 2
- 若
n
为奇数,则f(n) = 3n + 1
请计算并输出 f(n)
的值。
输入描述:
在一行中输入一个正整数 n
。
输出描述:
输出一个正整数,表示 f(n)
的结果。
解题思路
本题的核心是根据输入整数 n
的奇偶性,选择不同的计算公式。这是一个典型的条件分支问题。
- 读取输入:从标准输入读取一个整数
n
。 - 判断奇偶性:使用模运算(取余)
%
来判断n
是奇数还是偶数。- 如果
n % 2 == 0
,则n
是偶数。 - 否则,
n
是奇数。
- 如果
- 应用相应公式:
- 如果
n
是偶数,则计算n / 2
。 - 如果
n
是奇数,则计算3 * n + 1
。
- 如果
- 输出结果:将计算出的结果输出。
代码
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// 判断 n 的奇偶性
if (n % 2 == 0) {
// 偶数情况
cout << n / 2 << endl;
} else {
// 奇数情况
cout << 3 * n + 1 << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 判断 n 的奇偶性
if (n % 2 == 0) {
// 偶数情况
System.out.println(n / 2);
} else {
// 奇数情况
System.out.println(3 * n + 1);
}
}
}
n = int(input())
# 判断 n 的奇偶性
if n % 2 == 0:
# 偶数情况
# 使用 // 进行整数除法
print(n // 2)
else:
# 奇数情况
print(3 * n + 1)
算法及复杂度
- 算法:条件判断与算术运算。
- 时间复杂度:
- 这是一个固定的计算和判断流程。
- 空间复杂度:
- 仅需常数空间存储变量。