#include<bits/stdc++.h> //万能头
using namespace std;
int main()
{
int n, i, k;
double k1;
int k2;
cin >> n >> i;
for (int j = 1; j <= i; j++) // 循环j
{
if ((n % 2) == 1) // 根据题意
{
n = 3 * n + 5; //我理解的 "n <--- 3n+5"
}
else // n mod 2 == 0
{
k = 1; //初始化
k1 = n / pow(2, k);
k2 = (int)k1; //整数
while ((k1 - (int)k1) != 0 || k2 % 2 == 0)
{ // 判断是否整数
k += 1;
k1 = n / pow(2, k); // 整数
k2 = (int)k1; // 整数2
}
n = n / pow(2, k); // 二的k次方
}
}
cout << n; // 最后输出
return 0;
}
样例1可以过,2的话会tle,循环次数太多了,感觉会有好的数学方法,请指正。