Sum Problem
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 506192 Accepted Submission(s): 128411
Problem Description
Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).
In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.
Input
The input will consist of a series of integers n, one integer per line.
Output
For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer.
Sample Input
1 100
Sample Output
1 5050
问题链接:HDU1001 Sum Problem
问题简述:输入n,计算SUM(n)=1+2+3+...+n。
问题分析:
这是一个计算数列之和的简单问题。
解法有两种,一是,用等差数列求和公式来计算;二是,逐项相加。
程序说明:
ACM题的输出格式需要注意,经常计算是对的,而输出格式不正确,需要注意!
同时,ACM题通常是输入多组数据,所以需要注意循环控制!
这里给出两个程序。
前一个程序用等差数列求和公式来计算,有一个坑,就是做乘法的时候有可能导致数据溢出(虽然题目中说结果为32bit有符号整数),所以需要使用long long类型。
后一个程序显得比较笨拙。
题记:
程序员解决问题时,可以选择先做一下数学推导等,再编写程序,也可以直接编写程序。
AC的C语言程序如下:
/* HDU1001 Sum Problem */
#include <stdio.h>
int main(void)
{
long long n;
while(scanf("%lld", &n) != EOF) {
printf("%lld\n\n", n * (n + 1) / 2);
}
return 0;
}
AC的C语言程序如下:
/* HDU1001 Sum Problem */
#include <stdio.h>
int main(void)
{
int n, sum, i;
while(scanf("%d", &n) != EOF) {
sum = 0;
for(i = 1; i <= n; i++)
sum += i;
printf("%d\n\n", sum);
}
return 0;
}