#include #include using namespace std;

vector multiply(vector& nums1, vector& nums2) {//高精度乘法 int len1 = nums1.size(), len2 = nums2.size(); vector res(len1 + len2, 0); for (int i = len1 - 1; i >= 0; i--) { for (int j = len2 - 1; j >= 0; j--) { int mul = nums1[i] * nums2[j]; int p1 = i + j, p2 = i + j + 1; int sum = mul + res[p2]; res[p2] = sum % 10; res[p1] += sum / 10; } } while (!res.empty() && res[0] == 0) res.erase(res.begin()); return res; }

vector factorial(int n) {//计算n的阶乘 vector res(1, 1); for (int i = 2; i <= n; i++) { vector temp = res; vector num; while (i > 0) { num.push_back(i % 10); i /= 10; } for (int j = 0; j < num.size(); j++) { num[j] *= temp[0]; } res = multiply(num, temp); } return res; }

int main() { int n; cin >> n; vector res = factorial(n); for (int i = res.size() - 1; i >= 0; i--) { cout << res[i]; } return 0;


原文地址: https://www.cveoy.top/t/topic/fKSR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录