10014 - Simple calculations

本文详细阐述了解决涉及复杂序列计算的问题,通过提供输入样例和解析步骤,展示了如何通过迭代公式计算序列中的特定项。重点在于理解序列的生成规则,并运用给定的初始条件和中间变量(如a0, an+1 和 ci)来推导目标值a1。通过实例演示,读者可以掌握解决类似问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Simple  calculations

The Problem

There is a sequence of n+2 elements a0, a1,…, an+1(n <= 3000; -1000 <=  ai 1000). It is known thatai= (ai–1 + ai+1)/2 – ci  for each i=1, 2, ..., n. You are given a0, an+1, c1, ... , cn. Write a program which calculates a1.

The Input

The first line is the number of test cases, followed by a blank line.

For each test case, the first line of an input file contains an integer n. The next two lines consist of numbers a0 and an+1 each having two digits after decimal point, and the next n lines contain numbers ci(also with two digits after decimal point), one number per line.

Each test case will be separated by a single line.

The Output

For each test case, the output file should contain a1 in the same format as a0 and an+1.

Print a blank line between the outputs for two consecutive test cases.

Sample Input

1150.5025.5010.15

Sample Output

27.85
这题就是通过以下的方法找规律
n=1 : a2=2*a1+2*c1-a0 ;
n=2 : a3=3*a1+4*c1+2*c2-2*a0 ;
n=3 : a4=4*a1+6*c1+4*c2+2*c3-3*a0;
.
.
.
n=n :A(n+1)=(n+1)*a1+2*n*c1+(2*n-2)*c2+(2*n-4)*c3+....+2*Cn-n*a0;
这样就只有一个未知量a1了,就可以得出结果了
#include <stdio.h>
#include <string.h>
double a;
int main()
{
    int i,j,n,m,t;
    double s,s1;
    double x,y;
    scanf("%d",&m);
    while(m--)
    {
        s=0;
        s1=0;
        scanf("%d",&n);
        scanf("%lf %lf",&x,&y);
        t=2*n;
        for(i=1;i<=n;i++)
        {
            scanf("%lf",&a);
            s1+=t*a;
            t=t-2;
        }
        s=s+y+n*x-s1;
        s=s/(n+1);
        printf("%.2lf\n",s);
        if(m)
        {
            printf("\n");
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值