A1 = ?
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9283 Accepted Submission(s): 5657
Problem Description
有如下方程:Ai = (Ai-1 + Ai+1)/2 – Ci (i = 1, 2, 3, …. n).
若给出A0, An+1, 和 C1, C2, …..Cn.
请编程计算A1 = ?
若给出A0, An+1, 和 C1, C2, …..Cn.
请编程计算A1 = ?
Input
输入包括多个测试实例。
对于每个实例,首先是一个正整数n,(n <= 3000); 然后是2个数a0, an+1.接下来的n行每行有一个数ci(i = 1, ….n);输入以文件结束符结束。
对于每个实例,首先是一个正整数n,(n <= 3000); 然后是2个数a0, an+1.接下来的n行每行有一个数ci(i = 1, ….n);输入以文件结束符结束。
Output
对于每个测试实例,用一行输出所求得的a1(保留2位小数).
Sample Input
1 2 3 4 5 6 7 8 9 |
1 50.00 25.00 10.00 2 50.00 25.00 10.00 20.00 |
Sample Output
1 2 |
27.50 15.00 |
n个未知数n个方程暴力消元求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <cstdio> #include <iostream> using namespace std; double a[2]; double c[3001]; int main() { int n = 0;; while (scanf("%d", &n) == 1) { cin >> a[0]; cin >> a[1]; for (int i = 1; i <= n; i++) { cin >> c[i]; } c[1] = c[1] - a[0] / 2; c[n] = c[n] - a[1] / 2; double lef = -1; double rig = c[n]; for (int i = n - 1; i >= 1; i--) { rig = -rig * 0.5 / lef + c[i]; lef = -0.5*0.5 / lef - 1; } printf("%.2f\n", rig / lef); } } |