HDU - 2086 = A1 = ?
来源:互联网 发布:巨灵金融怎么查数据 编辑:程序博客网 时间:2024/05/29 03:20
HDU - 2086 = A1 = ?
数学题,本(zhi)人(zhang)觉得挺难的。。。
题目
解题思路
数学“思想”
因为 Ai = (Ai-1 + Ai+1) / 2 - Ci A1 = (A0 + A2) / 2 - C1; A2 = (A1 + A3) / 2 - C2;=> A1 + A2 = (A0 + A2 + A1 + A3) / 2 - (C1 + C2);=> A1 + A2 = (A0 + A3) - 2(C1 + C2);同理: A1 + A1 = (A0 + A2) - 2C1; A1 + A2 = (A0 + A3) - 2(C1 + C2 + C3); A1 + A3 = (A0 + A4) - 2(C1 + C2 + C3 + C4); ... A1 + An = (A0 + An+1) - 2(C1 + C2 + ... + Cn);对上式求和: nA1 + A1 + (A2 + A3 + ... + An) = nA0 + (A2 + A3 + ... + An) + An+1 - 2(nC1 + (n-1)C2 + ... + 2Cn-1 + Cn);=> (n+1)A1 = nA0 + An+1 - 2(nC1 + (n-1)C2 + ... + 2Cn-1 + Cn);综上: A1 = [nA0 + An+1 - 2(nC1 + (n-1)C2 + ... + 2Cn-1 + Cn)] / (n + 1)。
小波折
一开始用的cin输入的,直接Tle了,忘了输入项非常多了。。。
Ac代码
// 2086 - A1 = ?int main() { const int maxn = 3030; int n; double x, y, c[maxn]; // x为A0,y为An+1 while (~scanf("%d", &n)) { scanf("%lf%lf", &x, &y); for (int i = 1; i <= n; i++) { scanf("%lf", &c[i]); // 不能用cin,会Tle } double sum = 0.0; for (int i = 1; i <= n; i++) { sum += (n - i + 1) * c[i]; } sum = (n * x + y - 2 * sum) / (n + 1); printf("%.2lf\n", sum); } return 0;}
小结
- 纯数学题好像比算法还要难哎(不过应该是我啥算法都不会的缘故吧)。。
0 0
- HDU 2086 A1=?
- HDU 2086 A1 = ?
- hdu-2086 A1 = ?
- hdu 2086 A1 = ?
- HDU 2086 A1 = ?
- hdu-2086-A1 = ?
- HDU 2086 A1 = ?
- hdu 2086 A1=?
- hdu 2086 A1 = ?
- hdu 2086 A1 = ?
- HDU 2086 A1=?
- hdu 2086 A1 = ?
- hdu 2086 A1 = ?
- HDU - 2086 = A1 = ?
- Hdu 2086 A1=?公式csflx推导
- hdu 2086 A1 = ?(数学题)
- A1 = ? HDU 杭电2086 【数学】
- HDU 2086 A1 = ?(规律)
- POJ-1915
- POJ-2251
- SpringMVC--拦截器
- Ajax简介
- POJ-2366
- HDU - 2086 = A1 = ?
- POJ-2406
- serialVersionUID的作用
- spark streaming与spring batch批处理
- Android中自定义样式与View的构造函数中的第三个参数defStyle的意义
- Hibernate多对多
- Java 递归删除文件
- 7.自定义Toast
- hdu 1087 Super Jumping! Jumping! Jumping!