求助,56pts
  • 板块学术版
  • 楼主chenhongyicc
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/1/2 16:32
  • 上次更新2023/10/24 05:48:41
查看原帖
求助,56pts
813696
chenhongyicc楼主2023/1/2 16:32

题目

#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,循环次数太多了,感觉会有好的数学方法,请指正。

2023/1/2 16:32
加载中...