第二周正式开始!
直接开始:
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.
嗨,欢迎来到杭州电大在线评委。
在这个问题中,你的任务是计算和(n)=1+2+3+。。。+n。
Input
The input will
consist of a series of integers n, one integer per line.
输入将由一系列整数n组成,每行一个整数。
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.
对于每种情况,在一行中输出SUM(n),后跟一个空行。您可以假设结果在32位有符号整数的范围内。
Sample Input
1
100
Sample Output(注意是一个结果之后会打两个回车的)
1
5050
最开始直接用正常的循环做的,但是超时,然后先用公式直接搞定了一次:
#include <stdio.h>
int main(){
int a;
int sum;
while(scanf("%d",&a)!=EOF){
sum=0;
if(a%2==0){
sum=a/2*(a+1);
}
else{
sum=(a+1)/2*a;
}
printf("%d\n\n",sum);
}
}
后来重新试了一下正常的循环加法,也对,不过我用到了——int64。做法如下:
#include <stdio.h>
int main (){
int i,a;
__int64 sum;
while(scanf("%d",&a)!=EOF){
sum=0;
for(i=1;i<=a;i++){
sum+=i;
}
printf("%I64d\n\n",sum);
}
return 0;
}