AT_nikkei2019ex_e 题解

思路

进题扫一眼题目描述,可以写成这样:

\[f(x)=\begin{cases} \dfrac{x}{2}&x\bmod2=0\\ 3x+1&x\bmod2=1 \end{cases} \]

是不是很眼熟?这不就是角谷猜想嘛,但它不是让我们求步数果,而是求结果。它给了步数,求结果那就要倒推,第二个样例给了 \(P\) 最大时,也就是 \(1000\) 输出的结果 \(1789997546303\),我们就用这个结果往前推,带入角谷猜想的运算过程,就可以了。记得开 long long

代码

#include<iostream>
using namespace std;
long long a[1010];
int main()
{
    int p;
    cin>>p;
    a[1000]=1789997546303;
    for(int i=999;i>=p;i--){
        if(a[i+1]%2==1) a[i]=a[i+1]*3+1;
        else a[i]=a[i+1]/2;
    }
    cout<<a[p];
    return 0;
}
posted @ 2023-07-07 10:29  volatiles  阅读(30)  评论(0)    收藏  举报