QUESTION
每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 NN 朵花(五颜六色的雏菊),编号为 1…N1…N(1≤N≤1001≤N≤100),排列成一行。花 ii 有 pipi 朵花瓣(1≤pi≤10001≤pi≤1000)。
作为一名崭露头角的摄影家,Bessie 决定给这些花拍些照片。具体地说,对于每一对满足 1≤i≤j≤N1≤i≤j≤N 的花 (i,j)(i,j),Bessie 会给从花 ii 到花 jj 之间的所有花(包括 ii 和 jj)拍一张照。
后来 Bessie 查看这些照片时注意到有些照片里存在「平均」的花——一朵恰好有 PP 朵花瓣的花,其中 PP 等于照片中所有花的花瓣数量的平均值。
Bessie 的照片中有几张存在平均的花?
输入格式(从终端/标准输入读入):
输入的第一行包含 NN。第二行包含 NN 个空格分隔的整数 p1…pNp1…pN。
输出格式(输出至终端/标准输出):
输出存在平均的花的照片数量。
输入样例:
4 1 1 2 3
输出样例:
6
每张仅包含一朵花的照片均会被计入答案(在这个样例中有 44 张)。另外,在这个样例中 (i,j)(i,j) 为 (1,2)(1,2) 和 (2,4)(2,4) 所对应的照片也存在平均的花。
供题:Nick Wu
思路:
pictures | number of flowers | number of petals | mean | number of adverage flowers |
1 | 1 | 1 | 1 | 1 |
1,1 | 2 | 2 | 1 | 2 |
1,1 ,2 | 3 | 4 | 4/3 | 2 |
1 ,1 ,2 ,3 | 4 | 7 | 7/4 | 2 |
1 | 1 | 1 | 1 | 3 |
1 ,2 | 2 | 3 | 3/2 | 3 |
1 ,2 ,3 | 3 | 6 | 2 | 4 |
2 | 1 | 2 | 2 | 5 |
2 ,3 | 2 | 5 | 5/2 | 5 |
3 | 1 | 6 | 3 | 6 |
代码参考
#include<bits/stdc++.h> //由于作者本人比较懒,通常都用万能头文件
using namespace std;
int main(){
float a[110], num, sum, mean, N, b; //b其实完全没有必要,不过这样子对照表格可以更清晰
cin>>N;
for(int i=0; i<N; i++){
cin>>a[i];
}
for(int i=0; i<N; i++){
sum=0;
for(int j=i; j<N;j++){
sum=sum+a[j];
b=j-i+1;
mean=sum/b;
for(int k=i; k<=j; k++){
if(a[k]==mean){
num=num+1;
break;
}
}
}
}
cout<<num;
return 0;
}
这道题我觉得只要题意理解了就没有什么问题了,总体来说还是很简单的,加油