杭电acm1001题,我错哪了

#include<stdio.h>
void main()
{
int n,i,sum=0;
while(scanf("%d",&n)!=EOF){
for(i=1;i<=n;i++)
um=sum+i;
printf("%d\n\n",sum);
}
}
http://acm.hdu.edu.cn/showproblem.php?pid=1001
倒数第二句是sum=sum+i;上面的打错
恩 乘法溢出 int变成一个负迅肆值,变成行碰错误答案,是wa情况
我的代码:
#include<iostream>
int main()
{unsigned n;
while(std::cin>>n)
std::cout<<n*(n+1)/2<<"\n\n"亩带轿;
return 0;}
应该是int的问题
试一试long
大家都没看到问题的关键,此题int范围绝对够用,该代码的问题是sum的初始慧掘化,每次读入n都应物祥该初始化为0.
另外HDOJ的问题罩碧搏,可以到HDOJ专门的dicuss上提问,会有专人回答.
in the range of 32-bit signed integer
int的话是
-2的31次到+2的埋孝笑31次-1
范围不够慎斗
用unsigned int
输出用%u
或__int64
输弯含出用%I64d