求助一个VS(可能是它的锅?)的错误/kel

学术版

zhiyangfan @ 2021-12-04 16:30:20

这是代码(交到谷谷的超级玛丽上没有 \tt RE):

#include <cstdio>
#include <cstring>
const int N = 5e5 + 10; char s[N];
struct bigNum
{
    int a[N], len;
    bigNum(const char* s)
    {
        len = strlen(s + 1);
        for (int i = 1; i <= len; ++i) a[len - i + 1] = s[i] - '0';
    }
    bigNum(int k = 0)
    {
        len = 0;
        while (k) a[++len] = k % 10, k /= 10; 
    }
    int& operator[](int k) { return a[k]; }
    bigNum operator+(bigNum c)
    {
        bigNum ans(*this); ans.len = c.len > len ? c.len : len;
        for (int i = 1; i <= ans.len; ++i) ans[i] += c[i];
        int k = 0;
        for (int i = 1; i <= ans.len; ++i) ans[i] += k, k = ans[i] / 10, ans[i] %= 10;
        while (k) ans[++ans.len] = k % 10, k /= 10;
        return ans;
    }
    bigNum operator*(int k)
    {
        bigNum ans = *this;
        for (int i = 1; i <= k; ++i) ans = ans + ans;
        return ans;
    }
}A;
inline bool check(int x)
{
    bigNum k = A * 9 + 9 * x;
    int tot = 0;
    for (int i = 1; i <= k.len; ++i) tot += k[i];
    return tot <= x;
}
int main()
{
    printf("1\n");
    scanf("%s", s + 1); A = bigNum(s);
    int l = 1, r = A.len, mid, ans = 1;
    while (l <= r)
    {
        mid = (l + r) >> 1;
        if (check(mid)) r = mid - 1, ans = mid;
        else l = mid + 1;
    }
    printf("%d\n", ans); return 0;
}

但是 VS 上面调试的时候,就会出现这个错:

而且就我 main() 里面那第一行的 printf("1\n"); 都不会执行。请问是啥错啊qwq


by xyf007 @ 2021-12-04 16:36:46

@zhiyangfan 终端开栈


by zhiyangfan @ 2021-12-04 16:38:22

@xyf007 /yiw 能不能详细说一下,谢谢您qwq


by xyf007 @ 2021-12-04 16:47:55

@zhiyangfan 啊,你是 Linux 还是 Windows?


by xyf007 @ 2021-12-04 16:50:53

简而言之就是系统栈太小了


|