问题相关代码,请勿粘贴截图
struct bign {
int d[100005];
int len;
bign() {
memset(d, 0, sizeof(d));
len = 0;
}
};
运行结果及报错内容
当我把上面这个d数组开到1000005的时候,就出现了下面这种情况
下面是完整的代码:
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
struct bign {
int d[1000005];
int len;
bign() {
memset(d, 0, sizeof(d));
len = 0;
}
};
bign change(char str[]) {
bign c;
c.len = strlen(str);
for (int i = 0; i < c.len; i++) {
c.d[i] = str[c.len - i - 1] - '0';
}
return c;
}
bign multi(bign a, int b) {
bign c;
int carry = 0;
for (int i = 0; i < a.len; i++) {
int temp = a.d[i] * b + carry;
c.d[c.len++] = temp % 10;
carry = temp / 10;
}
while (carry != 0) {
c.d[c.len++] = carry % 10;
carry /= 10;
}
return c;
}
void print(bign a) {
for (int i = a.len - 1; i >= 0; i--)
printf("%d", a.d[i]);
printf("\n");
}
int main()
{
int n;
while (cin >> n) {
if (n == 0) cout << 1 << endl;
else {
bign ans;
ans.d[0] = 1; ans.len = 1;
for (int i = 2; i <= n; i++) {
ans = multi(ans, i);
}
print(ans);
}
}
return 0;
}