| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 160589 | Kevin | N的阶乘 | C++ | Accepted | 7 MS | 280 KB | 821 | 2026-09-24 15:13:17 |
#include<bits/stdc++.h> using namespace std; //高精度阶乘 void fact(int n) { int ans[3000] = {0}; //存大数,足够放1000! ans[0] = 1; //个位 int len = 1; //当前数字长度 for(int i = 2; i <= n; i++) { int carry = 0; //进位 for(int j = 0; j < len; j++) { int product = ans[j] * i + carry; ans[j] = product % 10; carry = product / 10; } while(carry > 0) { ans[len] = carry % 10; carry /= 10; len++; } } //逆序输出 for(int i = len -1; i >=0; i--) { cout << ans[i]; } cout << endl; } int main() { int a; while(cin >> a) { fact(a); } return 0; }