fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. std::uint64_t fact[501] = {0};
  6.  
  7. std::uint64_t factorial(int n)
  8. {
  9. if(n==0 || n==1)
  10. return 1;
  11. if(fact[n]>1)
  12. return fact[n];
  13.  
  14. if ((fact[n]=n*factorial(n-1))>=1000000007)
  15. {
  16. cout<<"before fact[" << n << "] = " << fact[n] << endl;
  17. fact[n] = fact[n] % 1000000007;
  18. cout<<"after fact[" << n << "] = " << fact[n] << endl;
  19. }
  20. return fact[n];
  21. }
  22.  
  23. int main()
  24. {
  25. int n = 14;
  26. cout<<"1"<<endl;
  27. cout<<factorial(n)<<endl;
  28. cout<<"4"<<endl;
  29. cout << fact[n] << endl;
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0s 3344KB
stdin
Standard input is empty
stdout
1
before fact[13] = 6227020800
after fact[13] = 227020758
before fact[14] = 3178290612
after fact[14] = 178290591
178290591
4
178290591