转自:http://blog.csdn.net/tlovet1314/article/details/5299512
题目 http://acm.hdu.edu.cn/showproblem.php?pid=1001
题目看起来是挺简单的,第一反应就是用公式做,哪晓得用公式中间也要注意使用的方法。
不能直接sum=(1+n)*n/2;因为题目只是说结果在32bit之内,但(1+n)*n很可能超出32bit,所以这样写放上去就是错的。
这可能是和编译有关吧!决定今天晚上复习下编译原理这部分的内容。
还有一个问题,题目也没有说要输入到文件末尾,但不加EOF判断,放上去又是错的,看来以后只要题目没有给出题目结束的标志时我都默认它要求输入到文件末尾好了。以防万一啊~~
- #include<stdio.h>
- int main()
- {
- int n;
- int sum;
- while(scanf("%d",&n)!=EOF) //eof notice
- {
- //一定要这么算
- if(n%2==0)
- sum=n/2*(1+n);
- else
- sum = (1+n)/2*n;
- printf("%d/n/n",sum);
- }
- return 0;
差点被这水题玩死,囧!