pat 1104. Sum of Number Segments
2016-07-22 23:01
363 查看
Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For example, given the sequence {0.1, 0.2, 0.3, 0.4}, we have 10 segments: (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).
Now given a sequence, you are supposed to find the sum of all the numbers in all the segments. For the previous example, the sum of all the 10 segments is 0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N, the size of the sequence which is no more than 10^5. The next line contains N positive numbers in the sequence, each no more than 1.0, separated by a space.
Output Specification:
For each test case, print in one line the sum of all the numbers in all the segments, accurate up to 2 decimal places.
Sample Input:
4
0.1 0.2 0.3 0.4
Sample Output:
5.00
**思路:找规律的题,第i个值出现次数为(i+1)乘(n-i),累加即可
PS:记得去年做的时候找了半天都没看出规律,今年几分钟就看出来了,
写代码还是需要勤加练习。**
Now given a sequence, you are supposed to find the sum of all the numbers in all the segments. For the previous example, the sum of all the 10 segments is 0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N, the size of the sequence which is no more than 10^5. The next line contains N positive numbers in the sequence, each no more than 1.0, separated by a space.
Output Specification:
For each test case, print in one line the sum of all the numbers in all the segments, accurate up to 2 decimal places.
Sample Input:
4
0.1 0.2 0.3 0.4
Sample Output:
5.00
**思路:找规律的题,第i个值出现次数为(i+1)乘(n-i),累加即可
PS:记得去年做的时候找了半天都没看出规律,今年几分钟就看出来了,
写代码还是需要勤加练习。**
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=100005; double a[maxn],sum=0; int n; int main(){ //freopen("in.txt","r",stdin); scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lf",&a[i]); sum+=a[i]*(n-i)*(i+1); } printf("%.2f\n",sum); return 0; }
相关文章推荐
- JDBC之CLOB与BLOB
- 如何自定义圆角dialog
- Android-BroadCastReceive广播小练习
- 二分图最大匹配模板
- C++基础知识点
- JDBC之读取数据库
- scala对象
- Activity的生命周期
- poj Silver Cow Party
- 小米范工具系列之十一:小米范渗透测试浏览器
- There are no resources that can be added or removed from the server.
- Codeforces 699D
- UVA 11401 Triangle Counting
- UVALive 5971 Permutation Counting 组合学、递推
- 《代码大全》读书笔记及随想(day02)
- 一句话明白排序算法之四——桶排序
- tomcat连接池,显示数据库内容到jsp
- Winform 拖拽控件
- Universal-Image-Loader框架使用(一),相信很多朋友都听过或者使用过这个强大的图片加载框架,下面介绍
- 《C++Primer》读书笔记之---Windows下通过命令行窗口编译运行C++程序的尝试