C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==0) cout<<1;
else if(n>=704511) cout<<56991483520;
else if(n>=665215) cout<<52483285312;
else if(n>=270271) cout<<24648077896;
else if(n>=159487) cout<<17202377752;
else if(n>=138367) cout<<2798323360;
else if(n>=113383) cout<<2482111348;
else if(n>=77671) cout<<1570824736;
else if(n>=60975) cout<<593279152;
else if(n>=31911) cout<<121012864;
else if(n>=26623) cout<<106358020;
else if(n>=20895) cout<<50143264;
else if(n>=9663) cout<<27114424;
else if(n>=4591) cout<<8153620;
else if(n>=4255) cout<<6810136;
else if(n>=1819) cout<<1276936;
else if(n>=703) cout<<250504;
else if(n>=639) cout<<41524;
else if(n>=447) cout<<39364;
else if(n>=255) cout<<13120;
else if(n>=27) cout<<9232;
else if(n>=15) cout<<160;
else if(n>=7) cout<<52;
else if(n>=3) cout<<16;
else if(n>=2) cout<<2;
else if(n>=1) cout<<1;
return 0;
}
上面的代码是用下面这段代码生成的
#include<bits/stdc++.h>
using namespace std;
map<long long,long long>m;
long long check(long long num)
{
if(m[num]) return m[num];
if(num==1) return 1;
if(num&1)
{
return m[num]=max(num*3+1,check(num*3+1));
}
else return m[num]=check(num/2);
}
int main()
{
long long n,maxx=0;
cin>>n;
for(long long i=1;i<=n;i++)
{
m[i]=max(i,check(i));
}
for(long long i=1;i<=n;i++)
{
if(m[i]>maxx)
{
maxx=m[i];
printf("else if(n>=%lld) cout<<%lld;\n",i,maxx);
}
//printf("%d,",maxx);
}
cout<<maxx;
}