fork download
  1.  
  2. //Adapted from this answer: https://stackoverflow.com/a/44053522/920069
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. char* factorial(int input1)
  9. {
  10. int val[200] = { 0 }; //100! is 158 digits
  11. int carry = 0;
  12. int size = 0;
  13. val[size++] = 1;
  14. for (int i = 2; i <= input1; i++)
  15. {
  16. for (int j = 0; j < size; j++)
  17. {
  18. int tmp = val[j] * i;
  19. val[j] = (tmp + carry) % 10;
  20. carry = (tmp + carry) / 10;
  21. }
  22. while (carry != 0)
  23. {
  24. val[size++] = carry % 10;
  25. carry = carry / 10;
  26. }
  27. }
  28.  
  29. char* ret = calloc(size+1, 1);
  30. for (int i = 0; i < size; ++i)
  31. {
  32. ret[i] = val[size - i - 1] + '0';
  33. }
  34. return ret;
  35. }
  36.  
  37. int main(void)
  38. {
  39. char* f = factorial(100);
  40. printf("%s\n", f);
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000