Advertisement
kodopp

Untitled

Mar 22nd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. // Compile me with -std=c++14 or higher
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. using func_t = std::function <long double (long double)>;
  8. const long double epsilon = 1e-2;
  9. auto make_derivative(func_t func) {
  10.     return [func](long double x) -> long double {
  11.         return (func(x + epsilon) - func(x - epsilon)) / (2.0 * epsilon);
  12.     };
  13. }
  14.  
  15. long long factorial(long long n) {
  16.     func_t func = [n](long double x) -> long double {
  17.         return pow(x, n);
  18.     };
  19.  
  20.     func_t tmp = func;
  21.     for (int i = 0; i < n; ++i) {
  22.         tmp = make_derivative(tmp);
  23.     }
  24.  
  25.     return (long long)round(tmp(1.0));
  26. }
  27.  
  28. int main() {
  29.     int n;
  30.     cin >> n;
  31.  
  32.     cout << factorial(n) << endl;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement