hdu 1001 Sum Problem 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1001
模拟水坑
题目大意:算从1加到n。
题目分析:这个题可以用模拟法和公式法,用公式的朋友们注意了,题中You may assume the result will be in the range of 32-bit signed integer.这一句是重点,重点中的重点在“result”上,最终结果在32-bit signed integer内,但过程中可能会超,公式n*(n+1)/2,如果按顺序算会出现n*(n+1),这个数就很可能超了。为保不超,可先除后乘,令过程中所有数都在32位范围内,自然就不会wa了。
以下是代码:
#include<stdio.h>
int main()
{
int n,aum;
while(scanf("%d",&n)!=EOF)
{
if(n%2)printf("%d\n\n",(1+n)/2*n);
else printf("%d\n\n",n/2*(n+1));
}
return 0;
}
PS:模拟法不会出现上述问题,两种方法都要注意答案输出后有两个换行。