HDOJ 2086 A1 = ?

来源:互联网 发布:淘宝卖了换钱什么意思 编辑:程序博客网 时间:2024/06/04 21:10

HDACM 2086

根据方程:Ai = (Ai-1 + Ai+1)/2 - Ci
可以写出:
A1 = 1/2 * A0 + 1/2 * A2 - C1;………………….①式

A2 = 1/2 * A1 + 1/2 * A3 - C2; ………………….②式

将①式代入②式,得到:
A2 = 1 / 3 * A0 + 2 / 3 * A3 - 2/3 * C1 - 4 / 3 * C2;………………..③式

将③式代入①式,得到:
A1 = 2 / 3 * A0 + 1 / 3 * A3 - 4 / 3 * C1 - 2 / 3 * C2.

以此类推:可以得到一个通式:对于An+1。
A1 = n / (n + 1) * A0 + 1 / (n + 1)* An+1 - 2*n / (n + 1)* C1 - (2*n - 2)/(n + 1)* C2 - ……..2 / (n + 1)* Cn-1。

耐心+细心=AC ^o^

import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while (sc.hasNext()) {            int n = sc.nextInt();            double a0 = sc.nextDouble();            double an= sc.nextDouble();            double[] c = new double[n+1];            for (int i = 1; i < c.length; i++) {                c[i] =sc.nextDouble();            }            double ans = 1.0*n/(n+1)*a0+1.0/(n+1)*an;            double k = n*2.0;            for (int i = 1; i < c.length; i++) {                ans -= k/(n+1)*c[i];                k -= 2.0;            }            System.out.printf("%.2f",ans);            System.out.println();        }        sc.close();    }}