NOIP 普及组初赛 · NOIP 2011 普及组初赛试题 第 25 题

阅读程序 · 答案 3 · 考点:输入输出、位运算、循环结构、字符串(string)、STL容器基础

← 整套速查表 NOIP 普及组初赛 全部真题

题目

阅读程序写结果

#include<iostream>
#include<cstring>
using namespace std;

const int SIZE = 100;

int main()
{
    int n,i,sum,x,a[SIZE];
    
    cin>>n;
    memset(a,0,sizeof(a));
    
    for(i=1;i<=n;i++){
        cin>>x;
        a[x]++;
    }
    i=0;
    sum=0;
    while(sum<(n/2+1)){
        i++;
        sum+=a[i];
    }
    cout<<i<<endl;
    return 0;
}

输入: 11 4 5 6 6 4 3 3 2 3 2 1

答案:3

考点

输入输出位运算 讲解 →位运算 真题汇总 →循环结构字符串(string)STL容器基础 讲解 →STL容器基础 真题汇总 →

解题思维

看到‘累加频次直到超过n/2+1’→先想数组统计与循环终止条件

常见错误

阈值n/2+1随n动态变化,勿硬编码;memset需用sizeof(a)全清零;i初值为0,循环内先++再访问a[i]。

详细解析(节选)

考点:数组频次统计|循环控制

程序在做什么

输入n个数,统计每个数出现的频次存入数组a,然后从下标1开始累加频次,直到累计总数超过n/2+1,输出此时的下标。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断