HDU 1002 之常见WA(C++描述)

HDU 1002 其实挺水的一题。不过我是个菜鸟,所以应该是典型的错误都犯了些,记录下来。



1.开始我忽略了每个pair数之间多余的空格

2.这个题是个大数相加的题。给出的数超过1000位,肯定无法用普通的INT在承载,只能用数组存储然后自己模拟加法的进位

3.开始在本地测试挺成功,但是给我同学一看发现我忽略了一些简单的情况。如1+99  11111111111+3等这样的情形

小问题还发生了很多,我在OJ上提交了N次,,,AC率变成了5%一下。。。汗。。

总结了一下,一般换行有问题会提示Presentation Error所以如果出现了WA,首先检查一下自己的代码把,其次看看输入输出格式。这基本上就没问题了

贴出我的程序,,,,费了劲了!

#include<stdio.h>
#include<string.h>
#include <iostream>
using namespace std;


char *add(char *a,char *b);
void print(char *a);
int main(void)
{
	
	int n;
	char num1[1502];
	char num2[1502];
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>num1>>num2;
		cout<<"Case "<<i+1<<":"<<endl;
		cout<<num1<<" + "<<num2<<" = ";
		print(add(num1,num2));
		cout<<endl;
		if(i+1!=n)
			cout<<endl;
	}

}
void print(char *a)
{
	int i=0;
	while(a[i]!='\0'||a[i]=='\0'&&i==0)
	{
		if(a[i]=='\0')
		{
			i++;
			continue;
		}
		else
		{
			cout<<a[i];
			i++;
		}
	}
}
char *add(char *a,char *b)
{
	int lena =strlen(a);
	int lenb =strlen(b);
	int c=0;
	int maxlen = (lena<lenb)?lenb:lena;
	char* sum=(char*)malloc(maxlen+2);
	sum[maxlen+1]='\0';
	memset(sum,'\0',sizeof(sum));
	while((lena-1)>=0&&(lenb-1)>=0)
	{
		int sum1 = a[lena-1]-'0';
		int sum2 = b[lenb-1]-'0';
		int sum3 = sum1+sum2+c;
		if(sum3>=10)
		{
			sum3=sum3-10;
			c=1;
		}
		else
			c=0;
		sum[maxlen]=sum3+'0';
		lena--;lenb--;maxlen--;
	}
	while(lena-1>=0)
	{
		if(lena-1>=0)
		{
			int tempa = a[lena-1]-'0';
			tempa = tempa+c;
			if (tempa>=10)
			{
				c=1;
				tempa=tempa-10;
			}
			else
				c=0;
			sum[maxlen]=tempa+'0';

			lena--;maxlen--;
		}
	}
	while(lenb-1>=0)
	{
		if(lenb-1>=0)
		{
			int tempb = b[lenb-1]-'0';
			tempb = tempb+c;
			if (tempb>=10)
			{
				c=1;
				tempb=tempb-10;
			}
			else
				c=0;
			sum[maxlen]=tempb+'0';
			lenb--;maxlen--;
		}
	}
	if(c==1)
	{
		sum[0]=1+'0';
	}
	return sum;
}

最后提示一下如果想用Java的话,用BigInteger有奇效

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值