HDOJ 1047 Integer Inquiry

和 HDOJ 1002 A + B  Problems(2) 类似。2题可以一起做了。

这里很郁闷,本来在POJ1053做过,这里就是比那多了一个n次输入。结果在HDOJ一直WA,题目看着感觉也怪怪的。

感觉似乎有错,这里把输出格式说下:每组后面空一行,最后一组后面没有空行。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 // Author: Tanky Woo
// HDOJ 1047
// Accepted 1047 0MS 192K 1052B C++ Tanky Woo 
 
// 思路:全部相加后在一起处理
/*
#include <iostream>
#include <algorithm>
using namespace std;
int nCases;
// www.wutianqi.com
char a[110];
int n[110];
int main()
{
	//freopen("input.txt", "r", stdin);
	scanf("%d", &nCases);
	for(int i = 1; i <= nCases; ++i)
	{
		memset(a, 0, sizeof(a));
		memset(n, 0, sizeof(n));
		getchar();
		int flag = 0;    //判断是否有输入,若无输入,则输出0
		while(scanf("%s", a) && strcmp(a, "0") != 0)
		{
			flag = 1;    //有输入,置1
			int cnt = 0;
			int len = strlen(a);
			for(int i = len-1; i >= 0; --i)    //输入并相加
			{
				n[cnt] += a[i]-'0';
				cnt++;
			}
		}
		for(int j = 0; j < 110; ++j)    //相加后一起处理
		{
			if(n[j] >= 10)
			{
				n[j+1] += n[j] / 10;
				n[j] %= 10;
			}
		}
		int j;
		//注意:这里不是最多进一位那么简单,可能进好多位
		//所以要从数组最后一直判断
		for(j = 109; j >= 0; --j)  
			if(n[j] != 0)
				break;
		for(int k = j; k >= 0; --k)
			printf("%d", n[k]);
		if(flag == 0)
			printf("0");
		i == nCases? printf("\n") : printf("\n\n");
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注