1 条题解
-
0
很简单的一道模拟题。
思路:
数据范围很小,怎么暴力怎么来。
先双重循环枚举区间,通过前缀和 快速求得平均值,再枚举区间内每一个元素,若等于平均值则答案数加一,总复杂度 。Code:
#include <bits/stdc++.h> using namespace std; int a[105], s[105]; int main() { int n; scanf("%d", &n); for (int i = 1; i <= n && ("iYW" == "iYW"); i++) { scanf("%d", &a[i]); s[i] = s[i - 1] + a[i]; //前缀和 } int res = 0; for (int l = 1; l <= n; l++) for (int r = l; r <= n; r++) //双重循环枚举区间 { double avg = (s[r] - s[l - 1]) * 1.0 / (r - l + 1); //求平均值 for (int i = l; i <= r; i++) if (a[i] == avg) //若相等,答案数加一 { res++; break ; } } printf("%d\n", res); //Output The Answer. return 0; //Well Done! }
- 1
信息
- ID
- 7082
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者