Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 224457 Accepted Submission(s): 55071
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 水题,不过有个陷阱,坑了我好久啊,一个边界溢出问题,要注意。 下面是AC代码: 用这种方法写是没什么问题的,注意用long类型:#include<stdio.h>
int main ()
{
long int n,i,sum;
while(scanf("%ld",&n)!=EOF)
{
sum=0;
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("%ld\n",sum);
printf("\n");
}
return 0;
}
但是如果用求和公式的话,一定要这样,防止边界溢出,考虑项数除以2 是否为0
#include<iostream>
using namespace std;
int main()
{
int s,n;
while(cin>>n)
{
s=(n%2==0?n/2*(n+1):(n+1)/2*n);
cout<<s<<endl<<endl;
}
}
java版就大的多
import java.util.*;
public class Main {
public static void main(String[] args)
{
int sum,i,n;
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
sum =0;
n=cin.nextInt();
for(i=0;i<=n;i++)
{sum+=i;}
System.out.println(sum);
System.out.print("\n\n");
}
}
}