AT_nikkei2019ex_e 题解

发布时间 2023-07-07 10:32:43作者: zhuangjihong

思路

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

是不是很眼熟?这不就是角谷猜想嘛,但它不是让我们求步数果,而是求结果。它给了步数,求结果那就要倒推,第二个样例给了 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;
}