poj1503 2010.2.17

POJ150320大数加法调试技巧
本文介绍了一种解决POJ150320问题中大数加法调试的方法,特别是针对结尾0的判断难题。通过使用C语言的数组来表示大整数,并实现逐位相加的算法,有效解决了WA问题。

poj1503 2010.2.17

调试问题:

对于结尾最后的0的判断,一直wa,学到了新的方法


#include <stdio.h>
#include <string.h>

#define MAXN 500+10

void main()
{
	int add[MAXN],ladd,num[MAXN],lnum,mid[MAXN],lmid;
	int i;
	char ch[MAXN];
	memset(add,0,sizeof(add));
	ladd=0;
	while (gets(ch),strcmp(ch,"0")!=0)
	{
		memset(mid,0,sizeof(mid));
		memset(num,0,sizeof(num));
		lnum=strlen(ch);
		for(i=1;i<=lnum;i++)
			num[lnum+1-i]=((int)ch[i-1])-48;
		if (ladd<lnum) 
			lmid=lnum;
		else lmid=ladd;
		for(i=1;i<=lmid;i++)
		{
			mid[i]+=add[i]+num[i];
			mid[i+1]=mid[i]/10;
			mid[i]%=10;
		}
		if (mid[lmid+1])
			lmid++;
		memcpy(add,mid,sizeof(mid));
		ladd=lmid;
	}
	while ((!add[ladd])&&(ladd))
	{
		ladd--;
	}
	if (ladd==0)
		printf("0");
	else
		for(i=ladd;i>=1;i--)	
			printf("%d",add[i]);
	printf("\n");
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值