RT,已排查可能出问题的代码如下:
(原题为高精度题目,基本算模板)
(原代码很长,且其他地方删除后剩下这些还出问题)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5;
char stmp[N];
struct ACC{
int size;
int num[N+5];
void clear()
{
for(int i=0;i<=size;i++)
num[i]=0;
size=0;
return;
}
void pushup()
{
for(int i=1;i<=N;i++)
{
num[i+1]+=num[i]/10;
num[i]%=10;
}
if(num[size+1]) size++;
return;
}
void reset_size()
{
for(size=N;size>=0 && !num[size];size--);
return;
}
int operator [](const int x){return num[x];}
};
ACC tmp;
ACC turn_ACC(int x)
{
tmp.clear();
while(x)
{
tmp.num[++tmp.size]=x%10;
x/=10;
}
tmp.reset_size();
return tmp;
}
bool operator == (ACC x,ACC y)
{
if(x.size!=y.size) return false;
for(int i=x.size;i>=1;i--)
if(x[i]!=y[i]) return false;
return true;
}
ACC operator + (ACC x,ACC y)
{
tmp.clear();
int maxn=max(x.size,y.size);
for(int i=1;i<=maxn;i++)
tmp.num[i]+=x[i]+y[i];
tmp.pushup();
tmp.reset_size();
return tmp;
}
ACC bottle,cnt;
ACC tmp2;
int k=1;
int main()
{
if(bottle==turn_ACC(k-1)) printf("111\n");
cnt=cnt+turn_ACC(1);
return 0;
}
已知的错误:
if(bottle==turn_ACC(k-1)) printf("111\n");
cnt=cnt+turn_ACC(1);
这两行只要删除任意一行就可以运行
const int N=1e5;
上面的 N 如果开小点,比如 1000,也可运行