Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <fstream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <vector>
  5.  
  6. void mult (std::vector<unsigned long long>& num, unsigned int m) {
  7. unsigned long long mem = 0;
  8. unsigned long long thirteen_digits = 10000000000000;
  9. for (size_t i = 0; i < num.size(); ++i) {
  10. unsigned long long sum = num[i] * m + mem;
  11. num[i] = sum % thirteen_digits;
  12. mem = sum / thirteen_digits;
  13. }
  14. if (mem > 0) {
  15. num.push_back(mem % thirteen_digits);
  16. }
  17. }
  18.  
  19. std::vector<unsigned long long> factorial(int n) {
  20. std::vector<unsigned long long> res = {1};
  21. res.reserve(1 << 16);
  22. for (unsigned int i = 1; i <= n; ++i) {
  23. mult(res, i);
  24. }
  25. return res;
  26. }
  27.  
  28. int main() {
  29. std::ifstream in("input.txt");
  30. std::ofstream out("output.txt");
  31. std::string s;
  32. in >> s;
  33. std::vector<unsigned long long> res = factorial(std::stoi(s));
  34. out << res.back();
  35. for (auto i = ++res.rbegin(); i != res.rend(); ++i) {
  36. out << std::setfill('0') << std::setw(13) << *i;
  37. }
  38. out << "\n";
  39. in.close();
  40. out.close();
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement