#include <iostream>
#include <numeric>
using namespace std;
int main() {
int a[101] = {};
int b[101] = {0,1};
int n;
cin >> n;
int count = 1,cx = 0,aount=1,ax=0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= count; j++) {
int k = b[j];
b[j] = (cx + k * i) % 10;
cx = (cx + k * i) / 10;
if (j == count && cx != 0)
count++;
}
for (int j = 1; j <= aount; j++) {
int k = a[j];
a[j] = (k + b[j] + ax)%10;
ax = (k + b[j] + ax) / 10;
if (j == aount && (ax != 0 || b[j + 1] != 0))
aount++;
}
}
for (int i = count; i >= 1; i--) {
cout << b[i];
}
cout << endl;
for (int i = aount; i >= 1; i--) {
cout << a[i];
}
return 0;
}
就是使用数组先去计算阶乘的数据,然后加到累加数组上面,其中设置了进位。
前三个数据都通过了,最后一个报错了。