3n+1问题
猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1.
例如:3->10->5->16->8->4->2->1。输入n,输出变换次数。n<=109
#include<iostream> using namespace std; int main() { long long n; // 如果n是奇数,会超出int:-2147483648 ~ 2147483647. int cnt = 0; cin >> n; while(n > 1) { if(n%2 == 1) n = 3*n+1; else n /= 2; cnt++; } cout<<cnt; return 0; }