POJ 2601|URAL 1047|Simple Caluculations|数学推导
2017-10-17 19:29
246 查看
http://acm.timus.ru/problem.aspx?space=1&num=1047
ai=12(ai−1+ai+1)−ci(i=1,2,⋯,N)
给定a0,an+1,c1,⋯,cn,写一个程序计算a1的值。
a1a2a3an−1an=12(a0+a2)−c1=12(a1+a3)−c1=12(a2+a4)−c1⋮=12(an−2+an)−cn−1=12(an−1+an+1)−cn
每行相加得
a1+⋯+an=12(a0+⋯+an−1+a2+⋯+an+1)−∑i=1nci
化简得
a1+⋯+an=a2+⋯+an−1+12(a0+a1+an+an+1)−∑i=1nci
移项得
12(a1+an)=12(a0+an+1)−∑i=1nci
乘2得
a1+an=a0+an+1−2∑i=1nci
令n=1,2,3,⋯,有
===na1+a1+a2+⋯+an(a1+a1)+(a1+a2)+⋯+(a1+an)(a0+a2−2∑i=11ci)+(a0+a3−2∑i=12ci)+(a0+a4−2∑i=13ci)+⋯na0+a2+a3+⋯+an+1−2∑j=1n∑i=1jci
有
na1+∑i=1nai=na0+∑i=2nai+an+1−2∑j=1n∑i=1jci
有
(n+1)a1+∑i=1nai=na0+∑i=1nai+an+1−2∑j=1n∑i=1jci
变换为a1的表达式,程序得。
题目翻译
有一个N+2个元素的数列:a0,a1,⋯,an+1(1≤N≤3000,−2000≤ai≤2000),并且满足ai=12(ai−1+ai+1)−ci(i=1,2,⋯,N)
给定a0,an+1,c1,⋯,cn,写一个程序计算a1的值。
输入
输入第一行一个整数N,接下来2行包含a0,an+1,均有2位小数,接下来N行每行一个2位小数ci。输出
输出a1,2位小数。样例输入
1 50.50 25.50 10.15
样例输出
27.85
题解
累加法:a1a2a3an−1an=12(a0+a2)−c1=12(a1+a3)−c1=12(a2+a4)−c1⋮=12(an−2+an)−cn−1=12(an−1+an+1)−cn
每行相加得
a1+⋯+an=12(a0+⋯+an−1+a2+⋯+an+1)−∑i=1nci
化简得
a1+⋯+an=a2+⋯+an−1+12(a0+a1+an+an+1)−∑i=1nci
移项得
12(a1+an)=12(a0+an+1)−∑i=1nci
乘2得
a1+an=a0+an+1−2∑i=1nci
令n=1,2,3,⋯,有
===na1+a1+a2+⋯+an(a1+a1)+(a1+a2)+⋯+(a1+an)(a0+a2−2∑i=11ci)+(a0+a3−2∑i=12ci)+(a0+a4−2∑i=13ci)+⋯na0+a2+a3+⋯+an+1−2∑j=1n∑i=1jci
有
na1+∑i=1nai=na0+∑i=2nai+an+1−2∑j=1n∑i=1jci
有
(n+1)a1+∑i=1nai=na0+∑i=1nai+an+1−2∑j=1n∑i=1jci
变换为a1的表达式,程序得。
// POJ 2601, URAL 1047 #include <cstdio> int main() { int n, i; double a, b, c, ans, sum; scanf("%d", &n); scanf("%lf%lf", &a, &b); sum = 0; for (i = 0; i < n; ++i) { scanf("%lf", &c); sum += (n - i) * c; } ans = (n * a + b - 2 * sum) / (n + 1); printf("%.2lf\n", ans); return 0; }
相关文章推荐
- POJ 1183 数学推导
- poj 1183 数学推导(反正切函数的应用)
- Poj 1338 Ugly Numbers(数学推导)
- poj 1183 反正切函数的应用 数学推导
- Poj 1338 Ugly Numbers(数学推导)
- POJ 3744 概率 + 分段 + 数学推导 + 快速幂
- Ural1209(数学推导)
- 数学推导+高精度进制转换+解同余方程 POJ 3708
- URAL 1309 Dispute (数学+推导)
- POJ 1905 Expanding Rods 二分加数学公式的推导
- poj 2601 公式推导
- poj 1045/3299 数学公式推导(欧姆定律/湿度值)
- poj 3737 UmBasketella(数学推导||三分)
- Ural 1082|Gaby Ivanushka|数学推导|快速排序|程序分析
- poj 3761 Panda's Birthday Present (数学公式推导~~推?)
- poj 1953 World Cup Noise (数学:推导)
- 数学推导——ACdream 1067
- poj 1850 Code (组合数学)
- POJ - 1850 Code(组合数学推公式)
- 常用数学公式推导及概念