[HUD 1001]Sum Problem

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.
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
 
 
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.    int i;
  6.    while(cin>>i)
  7.    {
  8.       if(i&1)cout<<(i+1)/2*i<<endl<<endl;
  9.       else cout<<i/2*(i+1)<<endl<<endl;
  10.    }
  11.    return 0;
  12. }
请注意看清题目的输出条件
这里题目的输出条件是: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再乘
题目并没有涉及到算法及策略问题,但是告诉我们,细节一定要注意!!
不要忽视了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值