Problem2256--选择题训练

2256: 选择题训练

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 305  Solved: 25
[Submit] [Status] [Web Board] [Creator:]

Description

一、单项选择题(共15题,每题4分,共计60分,每题有且仅有一个正确选项)

1.计算机直接识别和执行的语言是(    )。

A.C++语言            B.机器语言         C.自然语言          D.汇编语言

2.LAN在计算机科学技术领域的常见含义是(    )。

  A.互联网              B.万维网           C.局域网            D.无线局域网

3. 以下排序算法中不是稳定排序的是?(    )。

  A.希尔排序            B.归并排序          C.冒泡排序          D.插入排序

4.n(n≥2)个点的简单无向图最多有多少条边(    )。

  A.n-1                B.n                C.n2                D.n*(n-1)/2

5.对于一个五进制数14.32转换成十进制应该是(    )。

  A.8.62               B.9.68             C.9.74             D.10.56

6.对于一个八进制数4762转换成十六进制应该是(    )。

  A.9EA                B.9EF              C.9F0              D.9F2

7.设x=falsey=truez=false,以下逻辑运算表达式值为真的是(    )。

  A.x∨zy                               B.(xy)(yz)               

C.x∧yzy                            D.x(zy)z

8.将9本相同的书放到3个不同的书柜里,不可以有书柜空着,有(    )种不同的方式。

  A.28                 B.30               C.32               D.34

9.先进先出、后进后出的数据结构是(    )。

  A.链表                B.二叉树            C.               D.队列

10.中缀表达式9*3+2*(6+3)/4-5转为后缀表达式是(    )。

  A.9 3 * 2 + 6 * 3 + 4 / 5 -               B.9 3 * 2 6 3 + * + 4 5 / -

C.9 3 * 2 + 6 3 + * 4 / 5 -               D.9 3 * 2 6 3 + * 4 / + 5 -

11.有六个元素DABCFE从左至右依次顺序进栈,在进栈过程种会有元素被弹出栈。问下列哪一个不可能是合法的出栈序列(    )。

  A.BACEFD             B.DCBFAE           C.ACDBFE           D.FCEBAD

12.一个包含n个节点的满二叉树,它的叶子节点数目为(    )。

  A.n                  B. n/2                C. (n+1)/2              D. (n-1)/2

13.有一段长度为2分钟的视频,分辨率是2560×1440,每帧图像都是32位真彩色图像,在10%的压缩率下大小约位3.955GiB,视频的帧率为(    )。

  A.15Hz               B.24Hz             C.30Hz             D.60Hz

14.C++语言种,定义rd()为等概率随机生成unsigned int范围内的一个整数,那么等概率随机生成unsigned long long范围内的一个整数应该为(    )。

  A.1ull*rd()*rd()                        B.rd()<<32|rd()            

C.1ull*rd()<<32|rd()                     D.rd()+rd()

15.将3个红球,4个绿球,3个白球排成一行,有几种不同的排法(    )。

  A.4200               B. 4000             C.3628800          D.362880

二、阅读程序(程序输入不超过数组或字符串定义的范围,判断题正确填√,错误填×,除特殊说明外,判断题3分,选择题4分,共计20分)

16.

#include<bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;

typedef long long LL;

int a[N], b[N], c[N];

int main(){

    int n;

    cin >> n;

    for(int i=1; i<=n; i++)

        scanf("%d", &a[i]);

    for(int i=1; i<=n; i++)

        scanf("%d", &b[i]);

    for(int i=1; i<=n; i++)

        scanf("%d", &c[i]);

    sort(a+1, a+n+1);

    sort(b+1, b+n+1);

    sort(c+1, c+n+1);

    LL ans = 0;

    int cnta = 1, cntc = 1;

    for(int i=1; i<=n; i++) {

        while(cnta <= n && a[cnta] < b[i])

           cnta++;

        while(cntc <= n && c[cntc] <= b[i])

           cntc++;

        ans += (LL)(cnta - 1) * (n - cntc + 1);

    }

    cout << ans;

    return 0;

}

假设读入的nai,bi,ci是不超过105的正整数,完成下面的题目

判断题

1)该算法的时间复杂度是On2)。                                     

2)该程序输出的答案不超过n3                                      

3)代码运用了二分查找来计算cntacntc                                               

4)如果n的范围是n2000,那么ans不需要开long long            

选择题

5)将代码的while循环替换成lower_boundupper_bound,总时间复杂度为(    )。

  A. O(n         B. Onlogn       C. Onlog2n      D. On2

6)当输入为3 1 1 1 2 2 2 3 3 3时,输出结果是( )?

  A.27             B.21               C. 10              D. 9

三、完善程序(单选题,每题4分,共计20分)

17.(双重素数)定义双重素数为这样的素数:它的各位数字之和也是一个素数。T组询问,每组询问给定一个闭区间[l, r],求该区间内双重素数的个数。T1001lr108

#include<bits/stdc++.h>

using namespace std;

const int n = 1e8;

int cnt, p[n / 10];

bitset<n+1> vis;

void getprime() {

    for(int i=2; i<=n; i++) {

        if(!vis[i])

           p[++cnt] = i;

        for(int j=1; i*p[j]<=n; j++) {

           vis[i*p[j]] = 1;

           if(____①____)

               break;

        }

    }

}

int calc(int x) {

    int ans = 0;

    while(x) {

        ____②____;

        x /= 10;   

    }

    return ans;

}

void getdprime() {

    int cntt = 0;

    for(int i=1; i<=cnt; i++)

        if(____③____)

           p[++cntt] = p[i];

    cnt = cntt;

}

int main(){

    getprime();

    getdprime();

    int t;

    scanf("%d", &t);

    while(t--) {

        int l, r;

        scanf("%d%d", &l, &r);

        int ans1 = ____④____;

        int ans2 = ____⑤____;

        printf("%d\n", ans1 - ans2);

    }

    return 0;

}



1)①处应填(    )。

  A. i % p[j]                             B. i * p[j] ≤ n       

C. !(i % p[j])                           D. i > p[j]

2)②处应填(    )。

  A. ans = x                               B. ans = x % 10    

C. ans += x                             D. ans += x % 10

3)③处应填(    )。

  A. !vis[calc(p[i])]                      B. !vis[p[i]]      

C. calc(p[i])                           D. vis[calc(p[i])]

    (4)④处应填(    )。

  A. lower_bound(p+1, p+cnt+1, r) - p - 1                             

B. lower_bound(p+1, p+cnt+1, r) - p      

C. upper_bound(p+1, p+cnt+1, r) - p - 1                         

D. upper_bound(p+1, p+cnt+1, r) - p  

    (5)⑤处应填(    )。

A. lower_bound(p+1, p+cnt+1, l) - p - 1                           

B. lower_bound(p+1, p+cnt+1, l) - p      

C. upper_bound(p+1, p+cnt+1, l) - p - 1                         

D. upper_bound(p+1, p+cnt+1, l) - p  

Source/Category

初赛