| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 199044 | zgnzgn | 高精度阶乘 | C++ | 通过 | 100 | 396 MS | 392 KB | 725 | 2025-10-21 14:53:10 |
#include <bits/stdc++.h> // 万能头 using namespace std; int a[40000]; int main() { int n; cin >> n; // 输入 a[1] = 1; // 初始1的阶乘是1 a[0] = 1; // a数组的位数 for(int i = 2; i <= n; i++) { int t = 0; // t 代表进位 for(int j = 1; j <= a[0]; j++) { a[j] = a[j] * i + t; // 每次都加上进位 t = a[j] / 10; // 直接算进位 a[j] %= 10; // 剩个位 } while(t > 0) { // 处理进位 a[0] ++; // 有进位,怕不够,于是我向前加了一位... a[a[0]] = t % 10; // 直接首位加上进位 t /= 10; } } printf("%d!=",n); for(int i = a[0]; i > 0; i--) { // 输出 cout << a[i]; } return 0; // 完结撒花ヽ(°▽°)ノ ... }