fork download
  1. #include<bits/stdc++.h>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. int fact[1000][2500];
  7.  
  8. void fact_large(int n)
  9. {
  10. int i;
  11. fact[1][0] = 1;
  12. fact[1][1] = 1;
  13. if (fact[n][0] == 0)
  14. {
  15. for (i = n - 1; i > 0 ; i--)
  16. {
  17. if (fact[i][0] != 0)
  18. break;
  19. }
  20. for ( ; i < n; i++)
  21. {
  22. int j = 1;
  23. int carry = 0;
  24. int len = fact[i][0];
  25. while (len--)
  26. {
  27. int temp = (i + 1) * fact[i][j] + carry;
  28. fact[i + 1][j] = temp % 10;
  29. carry = temp / 10;
  30. j++;
  31. }
  32. while (carry > 0)
  33. {
  34. fact[i + 1][j] = carry % 10;
  35. carry /= 10;
  36. j++;
  37. }
  38. fact[i + 1][0] = j - 1;
  39. }
  40. }
  41. for (i = fact[n][0]; i > 0; i--)
  42. {
  43. cout << fact[n][i];
  44. }
  45. cout<<endl;
  46. }
  47.  
  48. int main()
  49. {
  50. int n, t;
  51. cin>>t;
  52. while(t--)
  53. {
  54. cin>>n;
  55. fact_large(n);
  56. }
  57. return 0;
  58. }
Success #stdin #stdout 0s 12864KB
stdin
1
100
stdout
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000