题库 模拟押题卷 题目列表 (烧作业)某课作业布置了N(3≤N≤10000)个题目,第i题对...
组合题

(烧作业)某课作业布置了N(3≤N≤10000)个题目,第i题对应的得分是a。作业的总

得分的计算方式为去掉作业中得分最小的一个题,剩下其它所有题目得分的平均值。但很不

幸小A遇到了一场火灾,前K(1<K<N-2)个题目被烧了,无法记录得分。小A想知道,K是多

少时,可以得到最高的作业得分?作业被烧了前K页,这时的得分是从第K+1页到最后一页

中,去除最小得分后取平均值。

输入第一行是整数N,第二行是n个不超过10000的非负整数表示a

输出一行,若干个整数表示答案。如果有多个K,请依次升序输出。

1 #include<cstdio>
2 #include<cmath>
3 #define min(a,b)(a<b?a:b)
4 #define MAXN 100002
5 using namespace std; 
6 int n, k[MAXN], cnt=0; 
7 int s[MAXN], minScore, sum;
8 double maxAverage=0,nowAverage; 
9 int main() { 
10 scanf("%d",&n); 
11 for(inti=1;i<= n;i++) 
12 scanf("%d",&s[i]); 
13 minScore=s[n]; 
14 ①; 
15 for(inti=n-1;i>=2;i--) { 
16 minScore=min(minScores[i]) 
17 ②; 
18 nowAverage=③; 
19 if(nowAverage> maxAverage){
20 ④ 
21 maxAverage=nowAverage; 
22 } else if(fabs(nowAverage-maxAverage)<1e-6) 
23 ⑤; 
24 }
25 for(int i=cnt; i >= 1; i--) 
26 printf("%d\n",k[i]);
27 return 0; 
28 }

1)①处应填( )

A.sum=n

B.sum=s[1]

C.sum=s[n]

D. sum=0

2)②处应填()

A.sum=maxAverage*(n-i)

B.sum+=s[i]

C.sum+=s[n-i]

D.sum=s[i]+minScore

3)③处应填( )

A.(double)(sum+minScore)/(n-i)

B.sum*1.0/(n-i)

C.(int)(sum-minScore)/(n-i)

D.(double)(sum-minScore)/(n-i)

4)④处应填( )

A.k[++cnt]=i;

B.k[cnt++]=i-1

C.cnt=1;k[cnt]=i-1;

D.cnt=0;k[cnt]=I;

5)⑤处应填( )

A. k[cnt++]=i;

B.k[++cnt]=i-1;

C. k[cnt++] =n-i;

D.k[cnt]=i;

第一空(3分):_____________

第二空(3分):_____________

第三空(3分):_____________

第四空(3分):_____________

第五空(3分):_____________

第 1 题 填空
第 2 题 填空
第 3 题 填空
第 4 题 填空
第 5 题 填空
题目信息
阅读程序
-
正确率
0
评论
40
点击
QQ
微信