fork(5) download
  1. #include<stdio.h>
  2. #define MAX 1000000
  3. long long int a[MAX]={0};
  4.  
  5. long long int max(long long int a,long long int b)
  6. {
  7. return a>b?a:b;
  8. }
  9.  
  10. long long int split(long long int n)
  11. {
  12. long long int x1,x2,x3,x;
  13. if(n==0)
  14. return 0;
  15. if(n<MAX)
  16. {
  17. if(a[n]==0){
  18. x1=split(n/2);
  19. x2=split(n/3);
  20. x3=split(n/4);
  21. x=x1+x2+x3;
  22. a[n]=max(x,n);
  23. }
  24. return a[n];
  25. }
  26. else
  27. {
  28. x1=split(n/2);
  29. x2=split(n/3);
  30. x3=split(n/4);
  31. x=x1+x2+x3;
  32. return max(x,n);
  33. }
  34. }
  35.  
  36. int main()
  37. {
  38. long long int n,x;
  39. while(scanf("%lld",&n)!=EOF)
  40. { memset(a,0,sizeof a);
  41.  
  42. printf("%lld\n",split(n));
  43. }
  44. return 0;
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
Success #stdin #stdout 0.01s 10112KB
stdin
12
2
stdout
13
2