解题过程的小记录,如有错误欢迎指出。
难度:三星(找规律题,测试点2至今未过,用了柳神代码也不行,可能是数据改过了orz本题用double有点小问题,甚至改了一下乘积顺序都会导致另外一个测试点过不了)
题目分析
给出一组数,找出所有的连续板块,求出各板块的和进行累加
注意点
- 可以用实例来找规律
我的解题过程
思路
找出每个数字出现的次数和它位置的关系,然后在输入的时候进行相乘累加即可
bug
测试点2到最后都过不了,把乘积次数先算然后乘以数字累加会导致测试点3也错误,估计可能是double的数据范围造成的问题,此bug未解决
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<double> num(n);
double result = 0;
for (int i = 0; i < n; i++) {
scanf("%lf", &num[i]);
result += num[i] * (n - i)*(i + 1);
}
printf("%.2f", result);
return 0;
}
dalao的代码
全部代码因版权原因不放出来,大家可以自行去柳神博客购买或者参考晴神的上机笔记~
借鉴点
两位dalao代码也过不了orz