你的问题在于,虽然题目说“You may assume the result will be in the range of 32-bit signed integer.”
但是(n+1)*n还是可能超出32-bit而导致溢出,所以把(n+1)*n/2改成:
(n%2==0?n/2*(n+1):(n+1)/2*n)
就可以了
#include
int SUM(int n);
int main()
{
using namespace std;
int n;
while(cin >> n)
{
int s = 0;
for(int i = 1; i <= n; i++)
s += i;
cout << s << endl;
cout << endl;
}
return 0;
}
这是我以前通过的代码 我也不知道你的有什么问题了
#include
using namespace m;
int sum(int n)
{ int x,y;
for(x=1;x<=n;x++)
y += x;
return y;
}
int main()
{ int a;
cin>>a;
if(a>=1)
{ sum(a);
cout< else {
cout<<"Error!"<
return 0;
}
呃 不清楚什么错误了 帮你写的用函数实现的 我学的C CPP还不太熟 有些语法可能不是CPP的 自己改一下 没调试过