#102. 数论第十四题(NOIP2013)

数论第十四题(NOIP2013)

第十四题(NOIP2013)

#include<iostream>
using namespace std;
int main(){
    const int SIZE=100;
    int n,f,i,j,t,left,right,middle,a[SIZE];
    cin>>n>>f;
    for(i=1;i<=n;i++)
        cin>>a[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=i;j++)
            if(a[i]>=a[j]){
                t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
    left=1;
    right=n;
    do{
        middle=(left+right)/2;
        if(f<=a[middle])
            right=middle;
        else
            left=middle+1;
    } while(left<right);
    cout<<left<<endl;
    return 0;
}
  1. 【判断题】将第4行的程序移动到02、03行的中间,程序能够正常运行。
    {{ select(1) }}
  • 正确
  • 错误
  1. 【判断题】将第11行的"="删除,运行结果会改变。
    {{ select(2) }}
  • 正确
  • 错误
  1. 【判断题】将第7行的"i=1; i<=n;"改为"i=0; i<n;"运行结果不会改变。
    {{ select(3) }}
  • 正确
  • 错误
  1. 【判断题】若第8行输入n个相同的数字,程序最后输出的left值为1。
    {{ select(4) }}
  • 正确
  • 错误
  1. 【选择题】当n=5,f=7,a={8,4,7,5,6}时,输出结果为( )。
    {{ select(5) }}
  • 3
  • 4
  • 5
  • 7
  1. 【选择题】输入仍是第(5)题的条件,将第11行的">="改为"<=",输出结果为( )。
    {{ select(6) }}
  • 3
  • 4
  • 5
  • 7