HZNUOJ

Input-Output Lecture (2) for ACM Freshman

Tags:
Time Limit:  1 s      Memory Limit:   32 MB
Submission:4787     AC:2857     Score:19.07

Description

给出n个整数,计算这些整数的和。

Input

输入有多组。

每组第一行是一个数字n (0<n<800000)。

第二行有n个整数,每个整数都在区间[-100, 100]之内。

当n为0时结束输入。

Output

对于每组输入,输出一行,即n个整数的和。

Samples

input
2 1 5 4 1 2 3 4 0
output
6 10

Hint

此题虽然没有说出切确的输入次数,但已告诉你在n为0时结束,因此我们可以以n==0为结束判定条件。另外,此题有超过十万级的读入量,在使用cin进行读入时很可能会超时,因此建议使用scanf进行读入或者关闭cin和cout的stdio同步(输出量非常巨大的时候也一样)。但需要注意一点,在关闭stdio同步后不能再使用C风格输入输出(包括scanf,printf,gets,puts,getchar等),否则提交上OJ后可能会出现各种奇怪的错误。
因此我们可以写出如下代码:
C语言版:
#include<stdio.h>
int main() {
	int i, n, sum, a;
	while (scanf("%d", &n), n) { // 逗号运算符,最右边的值为整个表达式的值
		sum = 0;
		for (i = 0; i<n; i++) {
			scanf("%d", &a);
			sum += a;
		}
		printf("%d\n", sum);
	}
	return 0;
}

C++版:
#include<iostream>
using namespace std;
int main() {
	ios::sync_with_stdio(false); // 关闭与stdio同步
	int n, sum, a;
	while (cin >> n, n) {
		sum = 0;
		for (int i = 0; i<n; i++) {
			cin >> a;
			sum += a;
		}
		cout << sum << endl;
	}
	return 0;
}

Author

CHEN, Yupeng