刚开始以为这道题挺简单的,直接用 前n项和的公式就OK了!SUM(n)=(n+1)*n/2
You may assume the result will be in the range of 32-bit signed integer.这句话的意思是说(n+1)*n/2在给定测试数据,计算的结果是不会溢出的
第一次用int存储每个整数,发现过不了。其原因是(n+1)*n有可能会溢出,
n和(n+1)其中势必有一个为奇数,有一个为偶数。把偶数的那个先除以2,计算结果就不会溢出来了。
#include <iostream>
using namespace std;
int main()
{
int a;
while(cin>>a){
if(a%2==0)cout<<(a/2)*(a+1);
else
cout<<((a+1)/2)*a;
cout<<"\n\n";
}
return 0;
}