杭电 1001 Sum Problem

来源:互联网 发布:淘宝购物返利群 编辑:程序博客网 时间:2024/06/05 00:25

这个题目看起来很简单只要使用高斯公式s=n*(n+1)/2就可以算出来,其实其中藏有陷阱。因为如果按照这样算的话,n*(n+1)的值有可能超过32bit的表示范围,所以一个有效的方法是先将n(n为偶数)除以2或者将(n+1)(n为奇数)除以2,这样就不会超过32bit的表示范围。

C++代码:

#include<iostream>using namespace std;int main(){int n;int sum=0;while(cin>>n){if(n&1)sum=(n+1)/2*n;elsesum=n/2*(n+1);cout<<sum<<endl<<endl;}return 0;}


原创粉丝点击