HDU1001 (Sum Problem)
<一>基本方法累加法
#include<stdio.h> //基本方法累加法
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
int sum=0;
for(i=1;i<=n;i++)
sum+=i;
printf("%d\n\n",sum);
}
return 0;
}
<二>高斯法求解
#include<stdio.h> //高斯法求解
int main()
{
int n,sum;
while(scanf("%d",&n)!=EOF)
{
if(n%2==0)
sum=n/2*(n+1);
else
sum=(n+1)/2*n;
printf("%d\n\n",sum);
}
return 0;
}
注意:题目中有一句要求是求和结果是32位有符号整数。那么问题来了,结果(n+1)*n/2一定是32位整数范围内的,但是(n+1)*n就不一定了。因此我们可以先除再乘来解决这个问题。