11 条题解

  • -1
    @ 2024-7-26 21:32:21

    题解

    思路

    这题只需根据题目递推关系式,找规律即可

    解题方法

    我们从 n=0n=0 开始计算

    T0=0T_0=0

    T1=kT_1=k

    T2=k+T1/2=3/2×kT_2=k+T_1/2=3/2 \times k

    T3=k+T2/3=3/2×kT_3=k+T_2/3=3/2 \times k

    T4=k+T3/4=3/8×k=(3/(2×4))×kT_4=k+T_3/4=3/8 \times k=(3/(2 \times 4))\times k

    $T_5=k+T_4/5=3/40 \times k=(3/(2 \times 4 \times 5))\times k$

    $T_6=k+T_5/6=3/240 \times k=(3/(2 \times 4 \times 5 \times 6))\times k$

    我们设 x=3/2kx =3/2k

    T0=0T_0=0

    T1=1T_1=1

    T2=xT_2=x

    T3=xT_3=x

    Tn=(x×(4×5×6...×n))kT_n=(x \times (4 \times 5 \times 6 ... \times n))k

    众所周知,随着 nn 的变化, (4×5×6...×n))(4 \times 5 \times 6 ... \times n)) 越来越大,也就是除数越来越大.

    而被除数不变,除数变大,商也就越来越小,即 TnT_n 越来越小 .

    可以看出,除 T2T_2T3T_3 不变,其余 TnT_n 的趋势为越来越小.

    又因为 3/2×k>k3/2 \times k > k ,即 T2>T1T_2>T_1

    所以,当 n=1n=1 时,只能取 T0T_0T1T_1.

    因为 T0=0T_0=0 , T1=kT_1=k , k>0k>0

    所以 T1>T0T_1>T_0

    所以取 T1T_1 , 即 kk .

    否则,即 n>=2n>=2时.

    因为除 T2T_2T3T_3 不变,其余 TnT_n 的趋势为越来越小.

    所以 n>=2n>=2 时,答案取 T2T_2T3T_3 时最大,即 3/2×k3/2 \times k .

    时间复杂度:

    添加时间复杂度, 示例: O(1)O(1)

    空间复杂度:

    添加空间复杂度, 示例: O(1)O(1)

    Code

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            double k;
            cin>>k;
            double ans=k*3/2*1.00; //保留精度
            if(n!=1) printf("%.1lf\n",ans);
            else printf("%.1lf\n",k); //特殊情况
        }
        return 0;
    }
    

    信息

    ID
    13
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    1259
    已通过
    336
    上传者