PE14 (记忆化)
记得开long long
1 #include<bits/stdc++.h> 2 #define MAXN 1000000 3 #define MAXR 50000000 4 int vis[MAXR]; 5 using namespace std; 6 int cal(long long n) 7 { 8 int ans=0; 9 if(n<MAXR&&vis[n]) return vis[n]; 10 if(n==1){ 11 return 1; 12 } 13 if(n%2){ 14 ans=1+cal(3*n+1); 15 } 16 else{ 17 ans=1+cal(n/2); 18 } 19 if(n<MAXR)vis[n]=ans; 20 return ans; 21 } 22 int main() 23 { 24 int ans=0,maxn=0; 25 for(int i=2;i<=MAXN;i++){ 26 int res=cal(i); 27 if(res>maxn){ 28 ans=i; 29 maxn=res; 30 } 31 } 32 cout<<ans<<endl; 33 return 0; 34 }

浙公网安备 33010602011771号