• 蓝桥杯模拟一 数列求值


    对于一个含有 n+2n+2 个元素的数列,A_0, A_1, cdots A_nA0,A1,An,满足这样的递归公式

    displaystyle A_i = frac{A_{i-1} + A_{i + 1}}{2} - C_i 1 le i le nAi=2Ai1+Ai+1Ci   1in

    现在我们知道 A_0, A_{n + 1}A0,An+1 和 C_1, C_2, cdots C_nC1,C2,Cn

    现在请你帮忙计算 A_1A1 的值。

    输入格式

    第一行输入一个整数 n(1 le n le 1000)n(1n1000)。

    第二行输入两个数 A_0A0 和 A_{n+1}An+1,接着是 nn 个数据分别是 C_1,C_2, cdots C_nC1,C2,Cn。所有的数据均是两位小数的浮点数。

    输出格式

    输出 A_1A1 的值,结果保留两位小数。

    样例输入1

    1
    50.50 25.50
    10.15

    样例输出1

    27.85

    样例输入2

    2
    -756.89 52.52
    172.22 67.17

    样例输出2

    -761.49

    化简题目给出的公式可以得到 A1 = An+1 + n*A0 - 2*Cn - ... - 2*n*C1
    做题的时候注意力不集中,因为中间一个地方把i写成了n,找了半个小时的bug,好痛苦。。。
    希望正式考试的时候注意力能集中。

    #include<queue>
    #include<cmath>
    #include<cstdio>
    #include<string>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define maxn 1010
    #define debug(a) cout << #a << " " << a << endl
    using namespace std;
    typedef long long ll;
    int main() {
        int n;
        cin >> n;
        double x,y;
        cin >> x >> y;
        double c[maxn];
        for( int i = 1; i <= n; i ++ ) {
            cin >> c[i];
        }
        double sum = 0.0;
        sum = y + n * x;
        int j = 1;
        for( int i = n; i >= 1; i -- ) {
            sum = sum - 2 * j * c[i];  //这里i让我写成了n,改了半个小时
            j ++;
        }
        sum = ( sum * 1.0 ) / ( ( n + 1 ) * 1.0 );
        printf("%.2lf
    ",sum);
        return 0;
    }


    彼时当年少,莫负好时光。
  • 相关阅读:
    linux命令: mount
    梳理一下uboot是如何从nandflash挂载文件系统的
    MDK的优化应用
    面向对象设计思想:面向对象设计的基本原则
    问题
    nodejs安装不了和npm安装不了的解决方法
    []: secureCRT连接ubuntu问题- The remote system refused the connection
    字符设备驱动[深入]:linux cdev详解
    使用MDK将STM32的标准库编译成lib使用
    liteos任务(二)
  • 原文地址:https://www.cnblogs.com/l609929321/p/8660261.html
Copyright © 2020-2023  润新知