• Source
    1. #include <bits/stdc++.h>
    2.  
    3. using namespace std;
    4.  
    5. string mul(string m, int n){
    6. char a[4];
    7. sprintf(a,"%d%c",n,'\0');
    8. int l1 = strlen(a);
    9. //printf("len : %d\n",l1);
    10. int l2 = m.length();
    11. int num[160]={0};
    12. // for(int i=0;i<l2;i++)
    13. // num[l2-i-1] = m[i] - '0';
    14. int carry =0;
    15. int x,y;
    16. for(int i=0;i<l1;i++){
    17. carry = 0;
    18. for(int j=0;j<l2;j++){
    19. x = m[l2-j-1]-'0'; y = a[l1-i-1]-'0';
    20. int var = x*y+carry + num[j+i];
    21. num[j+i] = var%10;
    22. carry = var/10;
    23. }
    24. x = l2;
    25. while(carry){
    26. int var = carry + num[x+i];
    27. num[x+i] = var%10;
    28. carry = var/10;
    29. }
    30. }
    31. m = "";
    32. char c;
    33. x=0;
    34. for(int i=159;i>=0;i--){
    35. x = x || num[i];
    36. if(x){
    37. c = num[i]+'0';
    38. m += c;
    39. }
    40. }
    41. return m;
    42. }
    43.  
    44.  
    45. int main(){
    46. int t;
    47. //printf("%s\n",mul("5678",13).c_str());
    48. scanf("%d",&t);
    49. vector<string> fact;
    50. fact.push_back("1");
    51. for(int i=1;i<=100;i++)
    52. fact.push_back(mul(fact[i-1],i));
    53. while(t--){
    54. int n;
    55. scanf("%d",&n);
    56. printf("%s\n",fact[n].c_str());
    57. }
    58. }