一个题解(补档:忘发代码了)
2026-03-25 22:20:11
发布于:江苏
3阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
// 高精度乘法:大数 X 小数
vector<int> multiply(vector<int> num, int x) {
int carry = 0; // 进位
for (int i = 0; i < num.size(); i++) {
int product = num[i] * x + carry;
num[i] = product % 10;
carry = product / 10;
}
// 处理剩余的进位
while (carry) {
num.push_back(carry % 10);
carry /= 10;
}
return num;
}
int main() {
int n;
cin >> n;
vector<int> result; // 倒序存储每一位
result.push_back(1); // 0! = 1
for (int i = 2; i <= n; i++) {
result = multiply(result, i);
}
// 倒序输出(高位在前)
for (int i = result.size() - 1; i >= 0; i--) {
cout << result[i];
}
return 0;
}
这里空空如也

有帮助,赞一个