fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <tuple>
  4.  
  5. double MakeNumber(double N, std::size_t P) {
  6. double V = N;
  7.  
  8. for (std::size_t i = 0; i < P; i++) {
  9. V = std::pow(V, N);
  10. }
  11.  
  12. return V;
  13. }
  14.  
  15. std::tuple<double, std::size_t > CrashNumber(double N,std::size_t P) {
  16.  
  17. double V = N;
  18. std::size_t i = 0;
  19. while (N >= P){
  20.  
  21. N = std::pow(N, 1 / (double)P);
  22. i++;
  23. }
  24.  
  25. return { N,i };
  26. }
  27.  
  28. int main() {
  29. std::size_t X = 3;
  30. std::size_t Y = 5;
  31.  
  32. double N = MakeNumber(X, Y);
  33.  
  34. double N10;
  35. std::size_t C = 0;
  36.  
  37. std::tie(N10,C) = CrashNumber(N, 10);
  38.  
  39. std::cout << N <<'('<<X<<','<<Y<<')'<< " -> " << '(' << N10 << ',' << C <<')'<< std::endl;
  40. }
Success #stdin #stdout 0s 4512KB
stdin
Standard input is empty
stdout
8.71896e+115(3,5) -> (1.30599,3)