uva-424 - Integer Inquiry

可能是大数系列的第一道题目吧,比较简单,仔细一点就行了。

我的做法是把输入的一系列数字倒置过来,然后挨个加,如果相加的和是两位数,那么leap=十位数字,计算下一组数据的时候再加上leap。

输出的时候,逆序输出。

#include<stdio.h>
#include<string.h>
int main()
{
	int i,n,m,big,leap,shu,len;
	char str[10000];
	int s[10000],sum[10000];
	len=0;
	for(i=0;i<10000;i++)
		sum[i]=0;
	while(gets(str)!=NULL)
	{
		if(str[0]=='0')
		{
			for(i=len-1;i>=0;i--)
			printf("%d",sum[i]);
			printf("\n");
			len=0;
			continue;
		}
		n=strlen(str);
		for(i=0;i<n;i++)
		{
			s[i]=str[n-i-1]-'0';
		}
		big=(n>len)?n:len;
		leap=0;
		shu=0;
		for(i=0;i<big;i++)
		{
			if(i<n)
				shu=shu+s[i];
			if(i<len)
				shu=shu+sum[i];
			shu=shu+leap;
			sum[i]=shu%10;
			leap=shu/10;
			shu=0;

		}
		len=big;
		if(leap!=0)
		{
			sum[big]=leap;
			len++;
		}
	}
	return 0;
}


你可能感兴趣的:(uva-424 - Integer Inquiry)