HDU-1047,Integer Inquiry(大數加法)

Problem Description:

One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers.
``This supercomputer is great,'' remarked Chip. ``I only wish Timothy were here to see these results.'' (Chip moved to a new apartment, once one became available on the third floor of the Lemon Sky apartments on Third Street.)  

Input: 

The input will consist of at most 100 lines of text, each of which contains a single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters in length, and will only contain digits (no VeryLongInteger will be negative).

The final input line will contain a single zero on a line by itself. 

Output: 

Your program should output the sum of the VeryLongIntegers given in the input.


This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks. 

 Sample Input:

1

123456789012345678901234567890

123456789012345678901234567890

123456789012345678901234567890

Sample Output: 

370370367037037036703703703670 

 類似的可以看這篇博客:https://blog.csdn.net/weixin_43823808/article/details/98449076

程序代碼: 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
#define N 101
int num[N],sum[N];
char s[N];
void find(char s[])
{
	int len=strlen(s),j=0;
	memset(num,0,sizeof(num));
	for(int i=len-1;i>=0;i--)
		num[j++]=s[i]-'0';
	for(int i=0;i<N;i++)
	{
		sum[i]+=num[i];
		if(sum[i]>=10)
		{
			sum[i]-=10;
			sum[i+1]++;
		}
	}
}
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		memset(sum,0,sizeof(sum));
		while(cin>>s)
		{
			if(strcmp(s,"0")==0)
				break;
			find(s);
		}
		bool flag=false;
		for(int i=N;i>=0;i--)
		{
			if(flag)
				cout<<sum[i];
			else if(sum[i])
			{
				cout<<sum[i];
				flag=true;
			}
		}
		if(!flag)
			cout<<"0";
		cout<<endl;
		if(n)
			cout<<endl;
	}
	return 0;
}

 

發佈了302 篇原創文章 · 獲贊 313 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章