可能在n*(n+1)乘法的时候,会溢出。看这句要求“You may assume the result will be in the range of 32-bit signed integer ”,要求的是求和结果是32位有符号整数。OJ给出的测试数据的求和结果(n*(n+1)/2)一定是32位整数范围内的,但是(n*(n+1))就不一定了
所以n(n+1)在这里不可行
另外这题输出结果需要blank line(空行)
#include<iostream>
using namespace std;
int main()
{
int n;
long long sum;
while(scanf("%d",&n) != EOF){
sum = 0;
int t = n%2 == 0 ? n/2*(n+1) : (n+1)/2*n;//这样在用公式之前 先除2防止溢出
// int t = n*(n+1)/2;
printf("%d\n",t);
printf("\n");
}
return 0;
}