zhiyangfan @ 2021-12-04 16:30:20
这是代码(交到谷谷的超级玛丽上没有
#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
简而言之就是系统栈太小了