0
点赞
收藏
分享

微信扫一扫

PAT_甲级_1104 Sum of Number Segments (20point(s)) (C++)【数学/找规律】


目录

​​1,题目描述​​

​​题目大意​​

​​注意​​

​​2,思路​​

​​3,AC代码​​

​​4,解题过程​​

​​第一搏​​

​​第二搏​​

1,题目描述

  • consecutive:连续不断的;

PAT_甲级_1104 Sum of Number Segments (20point(s)) (C++)【数学/找规律】_C++

Sample Input:

4
0.1 0.2 0.3 0.4

 

Sample Output:

5.00

题目大意

计算所有连续区间内数字的和。

注意

  • 题目中给出的序列是有序的,即不需要排序(排序了反而会出错。。。可能是我自己的问题~~>_<~~)

 

2,思路

找规律:

0.1,0.1 0.2,0.1 0.2 0.3,0.1 0.2 0.3

0.2,0.2 0.3,0.2 0.3

0.3,0.3

0.4;

----------------------------------------------------------

0.1*(4个*1次);

0.2*(3个*2次);

0.3*(2个*3次);

0.4*(1个*4次);

(o゜▽゜)o☆[BINGO!]

 

3,AC代码

代码量最少的一题o(* ̄▽ ̄*)ブ 

#include<bits/stdc++.h>
using namespace std;
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
int N;
scanf("%d", &N);
double data[100010], ans = 0.0;
for(int i = 1; i <= N; i++)
scanf("%lf", &data[i]);
for(int i = 1; i <= N; i++)
ans += data[i] * (N + 1 - i) * i;
printf("%.2f", ans);
return 0;
}

 

4,解题过程

第一搏

找规律鸭,找规律:

0.1,0.1 0.2,0.1 0.2 0.3,0.1 0.2 0.3

0.2,0.2 0.3,0.2 0.3

0.3,0.3

0.4;

----------------------------------------------------------

0.1*(4个*1次);

0.2*(3个*2次);

0.3*(2个*3次);

0.4*(1个*4次);

(o゜▽゜)o☆[BINGO!]

#include<bits/stdc++.h>
using namespace std;
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
int N;
scanf("%d", &N);
double data[N+1], ans = 0.0;
for(int i = 0; i < N; i++)
scanf("%lf", &data[i]);
sort(data, data + N);
for(int i = 0; i < N; i++){
ans += data[i] * (N + 1 - (i + 1)) * (i + 1);
}
printf("%.2f", ans);
return 0;
}

PAT_甲级_1104 Sum of Number Segments (20point(s)) (C++)【数学/找规律】_甲级_02

第二搏

理论上来说应该没毛病啊。

有可能是scanf的问题?

试了一下,还是没毛病。

和柳神的代码对比一下,,,多了个排序,莫非?

还真是。。。佛了(不清楚什么原因)

PAT_甲级_1104 Sum of Number Segments (20point(s)) (C++)【数学/找规律】_甲级_03

 

 

举报

相关推荐

0 条评论