测试集存在的问题
查看原帖
测试集存在的问题
857521
Ax_03楼主2024/10/11 16:31

下面是AC的代码


#include<iostream>
using namespace std;
int a[505],b[505],c[505];
int init(int x[])
{
	string baseData;
	cin>>baseData;
	int l = baseData.size();
	for(int i=0;i<l;i++)
	{
		x[i] = baseData[l-i-1]-'0';
	}
	return l;
}
int main()
{
	int la = init(a);
	int lb = init(b);
	int lc = max(la,lb);
	
	for(int i = 0; i < lc; i++)
	{
		c[i] += a[i] + b[i];
		if(c[i] >= 10)
		{
			c[i+1]++;
			c[i] -= 10;	
		}
	}
	
	if(c[lc] != 0)
	{
		cout<<c[lc];
	}
	
	for(int i = lc - 1;i>=0;i--)
	{
		cout<<c[i];
	}
	
	return 0;
}

很明显这个代码没有处理前导0的情况,但测试集也能过,所以大家在写的时候可能就会忽略去掉前导零。


输入 000 000 输出还是000


所以规范的代码应该是下面这个


#include<iostream>
using namespace std;
int a[505],b[505],c[505];
int init(int x[])
{
	string baseData;
	cin>>baseData;
	int l = baseData.size();
	for(int i=0;i<l;i++)
	{
		x[i] = baseData[l-i-1]-'0';
	}
	return l;
}
int main()
{
	int la = init(a);
	int lb = init(b);
	int lc = max(la,lb);
	
	for(int i = 0; i < lc; i++)
	{
		c[i] += a[i] + b[i];
		if(c[i] >= 10)
		{
			c[i+1]++;
			c[i] -= 10;	
		}
	}
	
	while(c[lc]==0&&lc>0)
		lc--;
	
	for(int i = lc;i>=0;i--)
	{
		cout<<c[i];
	}
	
	return 0;
}

大家注意一下这个问题。

2024/10/11 16:31
加载中...