Sum Problem
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 319745 Accepted Submission(s): 80523
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
Sample Output
1 5050由于有be in the range of 32-bit signed integer的限制,我刚开始做的 n*(n+1)/2通不过,打个比方,就像给出的结果必须在100以内,你算出的数为90,但是在没有除2的时候就超出范围了。正确的代码:#include<iostream> using namespace std; int main() { int a; while(cin>>a) { if(a%2 == 1) cout<<(1+a)/2*a<<endl<<endl; else { cout<<a/2*(a+1)<<endl<<endl; } } return 0; }这样就很好地解决了超限的问题,此外还有另外两种解法1:#include <iostream>
using namespace std;
int main() { __int64 n,m; while(cin>>n) { m=((1+n)*n)/2; cout<<m; } return 0; }
这是扩大了最大的限度。2:#include <iostream>
using namespace std;
int main() { long long n,m; while(cin>>n) { m=((1+n)*n)/2; cout<<m; } return 0; }