2017 初赛PJ 错题解析

Posted sjsjsj-minus-si

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017 初赛PJ 错题解析相关的知识,希望对你有一定的参考价值。

没脸地贴出记录

期望得分:82.5

实际得分:42.5(不借助任何资料及计算器)

出现的低级失误(共计36分):

1.T28(9) 因ubound写成rbound痛失9分(明明全对的……)

2.T27(3) result%m 正确答案: result该取模的时候才取模!不能养成步步取模的习惯

3.T8(1.5) 裸的zeller公式都能算错……还算错三遍
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1注意m+1,这玩意儿切忌心算,必须动手算!

4.T14(1.5) 若串 S = “copyright”,其子串的个数是( )。要算空串!45+1

5.T21(5) 找规律的题已经找出规律了但由于心算,痛失5分

6.T23(8) 那么大一个return 0;我没看见!痛失8分

7.T24(8) 眼残算错了一个数,这玩意儿检查的时候估计检查不出来,只能第一遍算的时候细心细心再2细心

小知识点

  • 从(2022 )年开始,NOIP 竞赛将不再支持 Pascal 语言。
  • 计算机存储数据的基本单位是(Byte)。
  • 下列不属于面向对象程序设计语言的是(C )。

    搞不懂的题

    第 26 题

    阅读程序写结果
#include<iostream>
using namespace std;
int main()

    int n, m;
    cin >> n >> m;
    int x = 1;
    int y = 1;
    int dx = 1;
    int dy = 1;
    int cnt = 0;
    while (cnt != 2)
    
        cnt = 0;
        x = x + dx;
        y = y + dy;
        if (x == 1 || x == n)
        
            ++cnt;
            dx = -dx;
        
        if (y == 1 || y == m)
        
            ++cnt;
            dy = -dy;
        
    
    cout << x << " " << y << endl;
    return 0;

输入 1:4 3
输出 1:_________(3 分)

输入 2:2017 1014
输出 2:_________(5 分)

1.正确答案: 1 3
2.正确答案: 2017 1

第 25 题

阅读程序写结果

#include<iostream>
using namespace std;
int main()

    string ch;
    int a[200];
    int b[200];
    int n, i, t, res;
    cin >> ch;
    n = ch.length();
    for (i = 0; i < 200; i++)
        b[i] = 0;
    for (i = 1; i <= n; i++)
    
        a[i] = ch[i - 1] - '0';
        b[i] = b[i - 1] + a[i];
    
    res = b[n];
    t = 0;
    for (i = n; i > 0; i--)
    
        if (a[i] == 0)
            t++;
        if (b[i - 1] + t < res)
            res = b[i - 1] + t;
    
    cout << res << endl;
    return 0;

输入:1001101011001101101011110001
输出:_________

18(WA)
正确答案: 11

T17

第 17 题
设 A 和 B 是两个长为 n 的有序数组,现在需要将 A 和 B 合并成一个排好序的数组,任何以元素比较作为基本运算的归并算法在最坏情况下至少要做( )次比较。
 A. n^2
 B. n log n
 C. 2n
 D. 2n - 1
正确答案: D

考察归并排序,可参考《大话数据结构》9.8节。
这题考的是比较次数,而不是时间复杂度或空间复杂度。

先看看最好的情况,设有序数组A[4] = 1, 3, 5, 7, 有序数组B[4] = 8, 10, 12, 14, 数组C[8]用来存储比较后的结果。

1与8比较,把1放到C中,C[] = 1
3与8比较,把3放到C中,C[] = 1, 3
5与8比较,把5放到C中,C[] = 1, 3, 5
7与8比较,把7放到C中,C[] = 1, 3, 5, 7
剩下的不用比较,直接放到C中,C[] = 1, 3, 5, 7, 8, 10, 12, 14
共比较了4次,即n次
>再看看最坏的情况,设有序数组A[4] = 1, 3, 5, 7, 有序数组B[4] = 2, 4, 6, 8, 数组C[8]用来存储比较后的结果。
1与2比较,把1放到C中,C[] = 1
2与3比较,把2放到C中,C[] = 1, 2
3与4比较,把3放到C中,C[] = 1, 2, 3
4与5比较,把4放到C中,C[] = 1, 2, 3, 4
5与6比较,把5放到C中,C[] = 1, 2, 3, 4, 5
6与7比较,把6放到C中,C[] = 1, 2, 3, 4, 5,6
7与8比较,把7放到C中,C[] = 1, 2, 3, 4, 5, 6, 7
最后的8不用比较,直接放到C中,C[] = 1, 2, 3, 4, 5, 6, 7, 8
共比较了7次,即2n - 1次

以上是关于2017 初赛PJ 错题解析的主要内容,如果未能解决你的问题,请参考以下文章

[初赛备战]计算机基础知识错题集

初赛错题 and 笔记

noip初赛错题积累

2015笔试错题

初赛_数学题错题总结

jQuery测试错题解析