#include <stdio.h>
int main(){
unsigned int i;
while(scanf("%u",&i)!= EOF)
printf("%u\n\n",i*(i+1)/2);
return 0;
}
注意点:
int是4字节,32位的,
若直接输出i*(i+1)/2 运算时,如果i已经足够大了,那么i*(i+1)就会超出32位的范围,导致溢出,因而会导致结果错误,所以需要设置为unsigned int。
若定义了一个int sum ;使得sum += i;这样处理的话,是慢慢累加的,不会溢出,所以最后输出的结果正确。
989

被折叠的 条评论
为什么被折叠?



