HDU1001 Sum Problem【水题】

本文针对HDU1001 SumProblem题目进行了解析,提供了两种解题思路:利用等差数列求和公式计算及逐项累加,并给出了相应的C语言实现代码。

 

Sum Problem

 

Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 506192    Accepted Submission(s): 128411

 

 

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

 

 

 

 

 

问题链接HDU1001 Sum Problem

问题简述:输入n,计算SUM(n)=1+2+3+...+n。

问题分析

  这是一个计算数列之和的简单问题。

  解法有两种,一是,用等差数列求和公式来计算;二是,逐项相加。 

程序说明

  ACM题的输出格式需要注意,经常计算是对的,而输出格式不正确,需要注意!

  同时,ACM题通常是输入多组数据,所以需要注意循环控制!

  这里给出两个程序。

  前一个程序用等差数列求和公式来计算,有一个坑,就是做乘法的时候有可能导致数据溢出(虽然题目中说结果为32bit有符号整数),所以需要使用long long类型。

  后一个程序显得比较笨拙。

题记

  程序员解决问题时,可以选择先做一下数学推导等,再编写程序,也可以直接编写程序。

 

AC的C语言程序如下:

 

/* HDU1001 Sum Problem */

#include <stdio.h>

int main(void)
{
    long long n;
    while(scanf("%lld", &n) != EOF) {
        printf("%lld\n\n", n * (n + 1) / 2);
    }

    return 0;
}

 

 

AC的C语言程序如下:

/* HDU1001 Sum Problem */

#include <stdio.h>

int main(void)
{
    int n, sum, i;

    while(scanf("%d", &n) != EOF) {
        sum = 0;
        for(i = 1; i <= n; i++)
            sum += i;

        printf("%d\n\n", sum);
    }

    return 0;
}


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值