fork download
  1. #include<iostream>
  2. #include<algorithm>
  3.  
  4. using namespace std;
  5. int cur_size ;
  6. void mult( string &s , int n ){
  7. if( n== 100 ){s = "00" + s;cur_size += 2;return ;}
  8. string t1, t2,x;
  9. int num = n%10,carry=0,temp;
  10. for(int i=0;;i++)
  11. {
  12. if(carry == 0 && s[i]=='0' && i >= cur_size)
  13. break;
  14. temp = ( (s[i]-'0') * num) + carry;
  15. carry = temp / 10;
  16. temp %= 10;
  17. t1.push_back( '0' + temp) ;
  18. }
  19. n/= 10;
  20. carry = 0;
  21. if(n != 0)
  22. {
  23.  
  24. for(int i=0;;i++)
  25. {
  26. if(carry == 0 && s[i]=='0' && i >= cur_size )break;
  27. temp = ( (s[i]-'0') * n) + carry;
  28. carry = temp / 10;
  29. temp %= 10;
  30. t2.push_back('0' + temp);
  31.  
  32. }
  33. s[0] = t1[0];
  34. carry = 0;
  35.  
  36. for(int i=t1.size();i<=t2.size();i++)
  37. t1.push_back('0');
  38.  
  39. for(int i=1;;i++)
  40. {
  41. if( i > t2.size() )
  42. {
  43. if(carry == 0)
  44. break;
  45. else {s[i] = '0' + carry;break;}
  46. }
  47. temp = ( t1[i] + t2[i-1] - (2*'0') ) + carry;
  48. carry = temp/10;
  49. s[i] = '0' + (temp% 10) ;
  50. }
  51. cur_size = t2.size()+1;
  52. }
  53. else
  54. {
  55. for(int i=0;i<t1.size();i++)s[i] = t1[i];cur_size = t1.size();
  56. }
  57. }
  58.  
  59. int main()
  60. {
  61.  
  62. int t,n;
  63. string s;
  64. s.resize (300);
  65. cin>>t;
  66. while(t)
  67. {
  68. cin>>n;
  69. fill( s.begin() , s.end() , '0' );
  70. s[0] = '1';
  71. cur_size = 1;
  72. for(int i=2;i<=n;i++)
  73. mult( s , i);
  74. for(int i=cur_size-1;i>=0;i--)
  75. cout<<s[i];
  76. cout<<endl;
  77. t--;
  78. }
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0s 3436KB
stdin
1 
95
stdout
0329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000