按奇偶规则迭代并逐行输出从初值到 1 的变换过程。
OJ: noi_openjudge
题目 ID: ch0105-21
难度:入门
标签:模拟循环python
日期: 2026-07-30 23:01
题意
正整数为奇数时变为 End。
思路
循环条件是 number != 1。每次先按奇偶计算 next_number 并按题面格式输出,再将当前数更新为它;输入本身为 1 时循环不执行,直接输出 End。
代码
Python代码
python
number = int(input())
while number != 1:
if number % 2:
next_number = number * 3 + 1
print(f"{number}*3+1={next_number}")
else:
next_number = number // 2
print(f"{number}/2={next_number}")
number = next_number
print("End")C++代码
cpp
#include <cstdio>
int main(){
long long n;
scanf("%lld",&n);
while( n != 1) {
long long ans;
if( n % 2 == 1){
ans = n*3+1;
printf("%lld*3+1=%lld\n",n,ans);
}
else {
ans =n /2;
printf("%lld/2=%lld\n",n,ans);
}
n = ans;
}
printf("End");
return 0;
}复杂度
设变换次数为
总结
过程输出题要区分“计算前的当前状态”和“计算后的下一状态”,输出后再更新状态。