Sum Problem
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32130 Accepted Submission(s): 6935
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.
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
100
Sample Output
1
5050
5050
- #include<iostream>
- using namespace std;
- int main()
- {
- int i;
- while(cin>>i)
- {
- if(i&1)cout<<(i+1)/2*i<<endl<<endl;
- else cout<<i/2*(i+1)<<endl<<endl;
- }
- return 0;
- }
请注意看清题目的输出条件
这里题目的输出条件是:For each case, output SUM(n) in one line,
followed by a blank line.
也就是说每个答案之间要有一个空行,很多人的错误应该是这里吧
所以代码里面第11,12行写的格式:
cout<<(i+1)/2*i<<endl<<endl;
cout<<i/2*(i+1)<<endl<<endl
题目说的很清楚,假设答案是一个32位的整数,那么用int类型就可以存储
但是在计算求和公式的时候就出现问题了
i*(i+i)也许会是一个大于32位的整数,这就会造成程序错误
所以这里一定要记住,先除2再乘
题目并没有涉及到算法及策略问题,但是告诉我们,细节一定要注意!!
不要忽视了