求助:程序未输出就RE(玄关)
  • 板块学术版
  • 楼主Jerrycyx
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/15 21:23
  • 上次更新2024/8/16 08:21:50
查看原帖
求助:程序未输出就RE(玄关)
545986
Jerrycyx楼主2024/8/15 21:23

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 如果开小点,比如 10001000,也可运行

2024/8/15 21:23
加载中...