大数加法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太难了
大佬写的

发布了54 篇原创文章 · 获赞 4 · 访问量 906

猜你喜欢

转载自blog.csdn.net/weixin_45460987/article/details/103246517