fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. #define ll long long
  5.  
  6. vector<ll> primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
  7. ll ans = 0;
  8. ll max_divisors = 0;
  9.  
  10. void f(ll rest, ll mini, ll pos, ll num, ll divisors) {
  11. if (divisors > max_divisors) {
  12. ans = num;
  13. max_divisors = divisors;
  14. }
  15.  
  16. ll pwr = 0;
  17. while (rest >= primes[pos] && pwr < mini) {
  18. rest /= primes[pos];
  19. pwr++;
  20. num *= primes[pos];
  21. f(rest, pwr, pos + 1, num, divisors * (1 + pwr));
  22. }
  23. }
  24.  
  25. int main() {
  26. ll maxi;
  27. cin >> maxi;
  28. f(maxi, 100, 0, 1, 1);
  29. cout << ans << " " << max_divisors << endl;
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0.01s 5288KB
stdin
1000000000000000000
stdout
897612484786617600 103680