zoukankan      html  css  js  c++  java
  • [C/E] 等差数列求和

    题目:要求给定一个整数 N,求从 0 到 N 之间所有整数相加之和。

    解1:使用 for 循环依次递加。

    #include <stdio.h>
    
    int main(void){
        int x;
        printf("Input an integer:
    ");
        scanf("%d", &x);
        printf("sum=%d
    ", sum(x));
        return 0;
    };
    
    int sum(int x){
        int i, result=0;
        for(i=0; i<=x; i++){
            result+=i;
        }
        return result;
    };

    解2:题目所求实际上为一个首项为 0,末项为 N,公差为 1 的等差数列,根据等差求和公式:S[n] = N * (N + 1) / 2 或者 S[n] = (a[1] + a[n]) * n / 2。

    #include <stdio.h>
    
    int main(void){
        int x;
        printf("Input an integer:
    ");
        scanf("%d", &x);
        printf("sum=%d
    ", sum(x));
        return 0;
    };
    
    int sum(int x){
        return (x + 1)*x/2;
    };

    输入与输入:

    $ ./a.out 
    Input an integer:
    100
    sum=5050

    等差数列公式

    an = a1 + (n - 1)d

    Sn = na1 + n(n-1)d/2

    n 表示数列长度。

    a1 表示首项。

    d 表示公差。

    Sn 表示求 n 项之和。

  • 相关阅读:
    单元测试
    python gdb
    圣诞树
    网络是怎样连接的 读书笔记
    POJ2104 K-th Number(整体二分)
    [SDOI2011]消耗战
    [HNOI2011]XOR和路径
    [HNOI2013]游走
    [JSOI2008]球形空间产生器
    POJ2728 Desert King
  • 原文地址:https://www.cnblogs.com/ifantastic/p/3902759.html
Copyright © 2011-2022 走看看