【杭电OJ从头刷】HDU1001

来源:互联网 发布:chakra linux 怎么样 编辑:程序博客网 时间:2024/06/05 10:37

http://acm.hdu.edu.cn/showproblem.php?pid=1001

#include<stdio.h>int main(){int i,n;while(scanf("%d",&n) !=EOF){int sum=0;for(i=1;i<=n;i++){sum+=i;}printf("%d\n\n",sum);}}

#include<stdio.h>int main(){int n;long result;while(scanf("%ld",&n) !=EOF){if(n%2==0){result = n/2*(1+n);}else{result = (1+n)/2*n;}printf("%ld\n\n",result);}}

由题意可知,计算的结果不会超过32bit,我们很容易想到的方法就是直接使用for循环相加求和。

另一种方法就是使用等差数列的求和公式,然而存在的问题就是在进行 n*(n+1) 运算的时候,可能会超出存储的范围,所以我们可以考虑,先进行除法运算,这样就保证了结果的合法性。

最后我们需要注意的一点就是,该题的输出格式为每条数据后需要进行两次换行。

0 0