码迷,mamicode.com
首页 > 其他好文 > 详细

PAT Basic 1132 数列的?段和(20) [数学问题-简单数学]

时间:2020-02-04 20:27:01      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:hidden   数字   tps   遍历   pre   main   author   NPU   隐式转换   

题目

给定?个正数数列,我们可以从中截取任意的连续的?个数,称为?段。例如,给定数列{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)这10个?段。给定正整数数列,求出全部?段包含的所有的数之和。如本例中10个?段总和是0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0。
输?格式:
输?第??给出?个不超过105的正整数N,表示数列中数的个数,第??给出N个不超过1.0的正数,是数列中的数,其间以空格分隔。
输?格式:
在??中输出该序列所有?段包含的数之和,精确到?数点后2位。
输?样例
4
0.1 0.2 0.3 0.4
输出样例:
5.00

题目分析

给定?个正数数列,从中截取任意连续的?个数,称为?段。例如,给定数列{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) 这10个?段。给定正整数数列,求出全部?段包含的所有的数之和。如本例中10个?段总和是0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0,在??中输出该序列所有?段包含的数之和,精确到?数点后2位

解题思路

  1. 找到每个数字在所有序列中出现次数的规律:如果当前是第i个数,则总出现次数等于i*(n+1-i)
  2. 计算总和时,只需遍历i,总和+=当前数字i(n+1-i)

易错点

  1. doubleintint和intintdouble,
    t+=i*(n+1-i)*m;//int*int*double 本题中n取值最大为10^5,所以int*int之后还是int可能越界,测试点2,3错误
    t+=m*(n+1-i)*i;//double*int*int 本题中n取值最大为10^5,但是double*int之后,结果隐式转换为double继续乘int,不会越界

Code

Code 01

#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    double sum = 0.0, temp;
    for (int i = 1; i <= n; i++) {
        cin >> temp;
        sum = sum + temp * i * (n - i + 1);
    }
    printf("%.2f", sum);
    return 0;
}

Code 01

#include <iostream>
using namespace std;
int main(int argc,char * argv[]) {
    long long n;
    scanf("%d",&n);
    double m, t=0.0;
    for(long long i=1; i<=n; i++) {
        scanf("%lf",&m);
        t+=i*(n+1-i)*m; //如果i定义为int这样写,测试点2,3不通过,因为n最大取值为10^5,int*int越界 
        //t+=m*i*(n+1-i);
    }
    printf("%.2f",t);
    return 0;
}


PAT Basic 1132 数列的?段和(20) [数学问题-简单数学]

标签:hidden   数字   tps   遍历   pre   main   author   NPU   隐式转换   

原文地址:https://www.cnblogs.com/houzm/p/12260721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!