hdu 1001 sum problem
hdu 1001 sum problem
problem Description:
Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).
In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + … + n.
Input:
The input will consist of a series of integers n, one integer per line
Output:
For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer.
Sample Input:
1
100
Sample Output:
1
5050
解题是需注意:直接用求和公式(n*(n+1)/2)是32位整数范围内的,但是(n*(n+1))就不一定了,所以要判断奇偶,来计算。
报错之后网上又找了其他解决方法,还可以直接因使用long long 类型———定义 __int64 调用 %I64d
方法一:
//
// main.c
// hdu1001
//
// Created by zhan_even on 2018/10/18.
// Copyright © 2018年 zhan_even. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
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;
}
方法二:
#include <stdio.h>
int main ()
{
int i,n;
__int64 sum;
while(scanf("%d",&n)!=EOF)
{
sum=0; //每算完一次都将sum清0
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("%I64d\n",sum);
printf("\n");
}
return 0;
}