题目大意:输入一个数n,如果 n 为偶数,算法将其除以 2,如果 n 为奇数,算法将其乘以 3 并加 1。 该算法重复此操作,直到 n 为 1。
解决方法:直接模拟。
要点 | 作用 |
---|---|
n&1 | 判断n是否为奇数 |
n>>=1 | 将n/2并向下取整 |
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n; cin >> n; cout << n << ' ';
while (n > 1) {
if (n&1) n = 3*n + 1;
else n>>=1;
cout << n << ' ';
}
return 0;
}