大数加法POJ1503

在这里插入图片描述

我能说这道题快把我打哭了么,55555,我好想口吐芬芳,5555
真的好想,
这道题我之前做过杭电上的简单版本,当时觉得自己会了,知道我拿到这道题,我又开始疯狂wa,上来就觉得有点懵,
整理一下思路:
先将这个verylong的字符串转换成一个一个数字,sum【】代表个位,十位,百位。。。的竖式加法的值,对吧很牛皮哦
然后就是判断是否大于等于10,如果大于等于10就要进位,然后然后就要找到第一个是0的数,从后往前找,找到就记下来,在倒着输出sum数组就行了!

康康代码吧

#include<stdio.h>
#include<string.h>
char str[120];
int sum[110];
void switch_num()
{
	int i,j,n;
	n=strlen(str)-1;
	for(int j=0,i=n;i>=0;i--,j++)
	{
		sum[j]=sum[j]+str[i]-'0';
	}
}
int main()
{
	int i,j,num;
	memset(sum,0,sizeof(sum));
	while(scanf("%s",str)&&strcmp(str,"0")!=0)
	{
		switch_num();
	}
	for(int i=0;i<110;i++)
	{
		if(sum[i]>9)
		{
			num=sum[i]/10;
			sum[i]=sum[i]%10;
			sum[i+1]=sum[i+1]+num;
		}
	}
	for(i=105;sum[i]==0;i--);//康康清楚我这个是什么意思
		for(j=i;j>=0;j--)
			printf("%d",sum[j]);
	printf("\n");
	return 0;
}

代码大部分借鉴了有一个大佬的博客,我也想自己想出来,可是可是我太菜了,我只能先学习别人,555太难了
大佬写的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值