fork download
  1. #include <iostream>
  2. #include <math.h>
  3. #include <cctype>
  4.  
  5. using namespace std;
  6.  
  7. unsigned long long conversions[1000000] = {0};
  8.  
  9. unsigned long long convert_to_currency(unsigned long long coins)
  10. {
  11. if(floor(coins/2) + floor(coins/3) + floor(coins/4) > coins)
  12. {
  13. if(coins < 1000000) {
  14. if(conversions[coins] && coins < 1000000)
  15. {
  16. return conversions[coins];
  17. }
  18. conversions[coins] = convert_to_currency(floor(coins/2)) + convert_to_currency(floor(coins/3)) + convert_to_currency(floor(coins/4));
  19. return conversions[coins];
  20. }
  21. else if(coins >= 1000000)
  22. {
  23. return convert_to_currency(floor(coins/2)) + convert_to_currency(floor(coins/3)) + convert_to_currency(floor(coins/4));
  24. }
  25.  
  26. }
  27.  
  28. return coins;
  29. }
  30.  
  31. int main() {
  32. unsigned long long coins = 0;
  33.  
  34. while(cin>>coins)
  35. {
  36. cout<<convert_to_currency(coins)<<endl;
  37. }
  38.  
  39. return 0;
  40. }
Success #stdin #stdout 0s 11120KB
stdin
42 
123 
555555 
1000000000
42
stdout
46
144
1298380
4243218150
46