Pat乙级 1049 数列的片段和
生活随笔
收集整理的這篇文章主要介紹了
Pat乙级 1049 数列的片段和
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Pat乙級(jí) 1049 數(shù)列的片段和
- 思路
- 代碼
題目網(wǎng)址
https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424
思路
觀察給出的數(shù)據(jù),得出規(guī)律,比如一共10個(gè)數(shù),第二個(gè)數(shù)出現(xiàn)的次數(shù)為 2 * (10 - 2 + 1)次,得到公式 result = i * (n - i + 1)。因?yàn)閐ouble的精度誤差問(wèn)題,用long long對(duì)數(shù)據(jù)進(jìn)行縮放再存儲(chǔ),最后再除。這里取1000參照了其他人的博客,跟測(cè)試數(shù)據(jù)是相關(guān)的,不是一個(gè)必然的解決方案。
累加的時(shí)候代碼中注釋掉的一行替換上來(lái)就過(guò)不了測(cè)試點(diǎn)2和測(cè)試點(diǎn)3,很奇怪,回頭還記得的話再看看。
代碼
#include<iostream> #include<iomanip>using namespace std;int main() {int n;long long sum = 0;double f;cin >> n;for (int i = 1; i <= n; i ++) {cin >> f;sum += (long long)(f * 1000) * i * (n - i + 1); // sum += i * (n - i + 1) * (long long)(f * 1000);}cout << setiosflags(ios::fixed) << setprecision(2) << sum /1000.0 << endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的Pat乙级 1049 数列的片段和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Pat乙级 1045 快速排序
- 下一篇: C++ STL之vector常用方法