PAT-B] 1001. 害死人不偿命的(3n+1)猜想 [模拟]

链接:1001. 害死人不偿命的(3n+1)猜想 (15)

题意

非常简单的数论模拟。

输入一个 n :

  1. 判断这个数 n 的奇偶性
  2. 奇数 -: n = ( 3 * n + 1 ) / 2
  3. 偶数 -: n = n / 2
  4. 不断地重复,直到 n = 1 停止。输出重复了几次

分析

其实都不用分析了…
只要按照题意去循环就好了

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
long long solve( long long n ){
if( n == 1 ) return 0;
if( n % 2 ) return 1 + solve( ( 3 * n + 1 ) / 2 );
else return 1 + solve( n / 2 );
}
int main()
{
long long n;
while( ~scanf( "%lld", &n ) ){
printf( "%lld\n", solve( n ) );
}
return 0;
}

小结

很水的一道题..
dalao签到用