这个题求和,高斯定理嘛,对是这样的,不过直接这样会wa的,因为题目限制32bit,n*(n+1)会造成溢出。。。。。
解决方法,先算除法,后算乘法:
1.当n为偶数时(n+1)*n/2==n/2*(n+1);
2.当那为奇数(n+1)*n/2==(n+1)/2*n......
代码如下:
#include <iostream>
using namespace std;
int main(void)
{
int n;
while (cin >> n)
{
if (n % 2 == 0)
cout << (n/2)*(n+1) << endl << endl;
else
cout << ((n+1)/2)*n << endl << endl;
}
return 0;
}