pat 乙级 1049. 数列的片段和(20)
来源:互联网 发布:b2b平台排名数据 编辑:程序博客网 时间:2024/06/15 21:51
思路: 求各个数列的片段的和 相当于 求出 每个 数出现的次数 然后全部相加 即可 。
这里 如果 用双重循环 遍历 肯定炸 超时一定的。
这里 类似与 数学的找规律 :可以发现 每个数出现的次数 是有一定规律的,
如下 :
如{0.1, 0.2, 0.3, 0.4,0.5}
(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.1, 0.2, 0.3, 0.4,0.5)
(0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.2, 0.3, 0.4, 0.5)
(0.3) (0.3, 0.4) (0.3, 0.4, 0.5)
(0.4) (0.4, 0.5)
(0.5)
0.1 5 = 5 * 1 5-0 * 0+1 N=5
0.2 8 = 4 * 2 5-1 * 1+1
0.3 9 = 3 * 3 5-2 * 2+1 // (N - i)*(i + 1);
0.4 8 = 2 * 4 5-3 * 3+1
0.5 5 = 1 * 5 5-4 * 4+1
如{0.1, 0.2, 0.3, 0.4}
(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4)
(0.2) (0.2, 0.3) (0.2, 0.3, 0.4)
(0.3) (0.3, 0.4)
(0.4)
0.1 4 = 4 * 1 4-0 * 0+1 N=4
0.2 6 = 3 * 2 4-1 * 1+1 // (N - i)*(i + 1);
0.3 6 = 2 * 3 4-2 * 2+1
0.4 4 = 1 * 4 4-3 * 3+1
......
...
所以 每个数出现的次数 就是 (N-i)*(i+1)
还有一种思路 就是 判断 i 会出现在哪些子区间里面
比如 1---------i--------n
i 的 左端点 在1-i
i 的 右端点在 i-n
所以 i 的可选情况 有 (i+1) (n-i)
还有第三种思路 :后期补
这里给出 前两种思路的 代码实现:
#include <stdio.h>#include <iostream>#include <cstdlib>#include <cmath>#include <cctype>#include <string>#include <cstring>#include <algorithm>#include <ctime>using namespace std;double num[100005];int main() { int N; cin>>N; for (int i = 0; i < N; ++i) { cin>>num[i]; } double sum=0.0; for (int i = 0; i < N; ++i) { sum += (N - i)*num[i]*(i + 1); } printf("%.2lf\n",sum); return 0;}
提交代码
- [PAT-乙级]1049.数列的片段和
- PAT乙级—1049. 数列的片段和(20)-native
- PAT乙级.1049. 数列的片段和(20)
- PAT 乙级 1049. 数列的片段和(20)
- PAT乙级 1049. 数列的片段和(20)
- PAT乙级 1049. 数列的片段和(20)--数学问题
- [PAT乙级]1049. 数列的片段和(20)
- PAT乙级1049. 数列的片段和(20)
- pat 乙级 1049. 数列的片段和(20)
- PAT乙级1049. 数列的片段和(20)
- 1049. 数列的片段和(20) PAT乙级真题
- PAT乙级1049 数列的片段和
- PAT乙级1049 数列的片段和
- 1049. 数列的片段和(20)-浙大PAT乙级真题
- PAT 乙级 1049. 数列的片段和(20)(得了17)
- PAT乙级1049. 数列的片段和(20)------------------int精度问题
- 【PAT】1049. 数列的片段和(20)
- PAT 1049. 数列的片段和(20)
- 程序员理想的工作环境应该是怎样的?
- Visible Lattice Points POJ
- Java学习笔记--环境配置
- 解决移动端嵌入Web页时,跳转页面后退缓存问题
- kaggle 邮箱验证的时候提示 You did not enter the correct captcha response. Please try again
- pat 乙级 1049. 数列的片段和(20)
- 关于char数组的一点记录
- 网易编程题解析(二)
- Oracle初始化
- JAVA Hibernate工作原理及为什么要用
- ACM概率期望dp刷题总结
- 表达式、语句
- 语句块
- ssm练手(CRUD) 9、实现删除功能