PAT 1049 数列的片段和 20分 知识点:找规律

82 阅读1分钟

题目:1049 数列的片段和 - PAT (Basic Level) Practice (中文) (pintia.cn)

解析:49_哔哩哔哩_bilibili

找规律:

1出现的个数=1前面的数的个数(算上1自身)× 1后面的数的个数(也算上1自身)

1 × 4 = 4 image.png

2出现的个数=2前面的数的个数(算上2自身)× 2后面的数的个数(也算上2自身)

2 × 3 = 6

image.png

3,4同理。

#include<bits/stdc++.h>
using namespace std;

int main()
{

    int n=0;cin>>n;
    double x,sum=0;
    for(int i=1;i<=n;i++)
    {
    scanf("%lf",&x);
    sum+=x*i*(n-i+1);
        }
    printf("%.2lf",sum);
    return 0;
}

image.png

原因是n最大为1e5,double越大精度差越大,所以我们这里可以用long double;

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    long double x,sum=0; //sum要么定为全局变量要么初始化
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    scanf("%llf",&x);

        sum+=x*i*(n-i+1);
    }

    printf("%.2llf",sum);
    return 0;
}