题型介绍与计算机基础 试卷分析

发布时间 2023-07-31 21:00:05作者: SuperUser777

第一题

题目再现

下列不属于面向对象语言的是:A. C++ B. Java C. Rust D. Fortran

知识点熟练度不够,Fortran 为面向过程语言

阅读程序题

代码再现

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s; cin >> s;
    int k; cin >> k;
    while (s.length() > k) {
        string tmp = "";
        int n = s.length();
        for (int i = 0; i < n; i += k) {
            int val = 0;
            for (int j = i; j < min(i + k, n); j ++) {
                val += s[j] - '0';
            }
            tmp += to_string(val);
        }
        s = tmp;
    }
    cout << s << endl;
    return 0;
}

// 题目中输入:11111222223 3

第十二题

判断:每一轮 while 循环中,字符串 s 的长度必然不断变小。(F)

见第十六题例子,第一个到第二个并没有长度减小

第十三题

判断:to_string 函数将一个正整数转化为了一个字符数组。(F)

概念:to_stringint 转化为 string

第十六题

本题的时间复杂度是:A. \(O(n)\) B. \(O(n^2)\) C. \(O(nk)\) D. \(O(n log n)\)

由题意可知,字符串如果是 "9999999999"\(10\)\(9\)),那么变化过程为:

9999999999
1818181818
99999
18189
999
...

每次长度减少一半,那么 \(n+\cfrac{2}{n}+\cfrac{4}{n}+...=4n\)(无穷等比数列求和),所以时间复杂度 \(O(n)\)