vs的奇葩错误
  • 板块灌水区
  • 楼主wzmzmhk
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/6/19 09:28
  • 上次更新2023/11/4 21:44:12
查看原帖
vs的奇葩错误
250983
wzmzmhk楼主2021/6/19 09:28
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 100005;
struct Bigint {
    int len, a[maxn];
    Bigint(int x = 0) {
        memset(a, 0, sizeof(a));
        int i;
        for (len = 1; x; len++)
            a[len] = x % 10, x /= 10;
        len--;
    }
    int& operator[](int i) {
        return a[i];
    }
    void flatten(int L) {
        len = L;
        for (int i = 1; i <= len; i++)
            a[i + 1] += a[i] / 10, a[i] %= 10;
        while (!a[len])
            len--;
    }
    void print() {
        for (int i = max(len, 1); i >= 1; i--)
            cout << a[i];
    }
};
Bigint operator+(Bigint a, Bigint b) {
    Bigint c;
    int len = max(a.len, b.len);
    for (int i = 1; i <= len; i++)
        c[i] += a[i] + b[i];
    c.flatten(len + 1);
    return c;
}
Bigint operator*(Bigint a, int b) {
    Bigint c;
    int len = a.len;
    for (int i = 1; i <= len; i++)
        c[i] = a[i] * b;
    c.flatten(len + 11);
    return c;
}
int main()
{
    Bigint ans(0), fac(1);
    int m;
    cin >> m;
    for (int i = 1; i <= m; i++) {
        fac = fac * i;
        ans = ans + fac;
    }
    ans.print();
    return 0;
}



2021/6/19 09:28
加载中...