2022年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

# 2022年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

第3题
cpp 复制代码
1  #include <iostream>
2  #include <algorithm>
3  
4  using namespace std;
5  
6  const int MAXL = 1000;
7  
8  int n, k, ans[MAXL];
9  
10 int main(void) 
11 {
12     cin >> n >> k;
13     if (!n) cout << 0 << endl;
14     else 
15     {
16         int m = 0;
17         while (n) 
18         {
19             ans[m++] = (n % (-k) + k) % k;
20             n = (ans[m - 1] - n) / k;
21         }
22         for (int i = m - 1; i >= 0; i--)
23             cout << char(ans[i] >= 10 ?
24                          ans[i] + 'A' - 10 :
25                          ans[i] + '0');
26         cout << endl;
27     }
28     return 0;
29 }

假设输入的 n 在 int 范围内,k 为不小于 2 且不大于 36 的正整数,完成下面的判断题和单选题:

判断题

  1. 该算法的时间复杂度为 O ( l o g ⁡ k n ) O(log⁡_kn) O(log⁡kn)。

    A. 正确 B. 错误

  2. 删除第 23 行的强制类型转换,程序的行为不变。

    A. 正确 B. 错误

  3. 除非输入的 n 为 0,否则程序输出的字符数为 ⌊ l o g ⁡ k ∣ n ∣ ⌋ + 1 ⌊log⁡_k∣n∣⌋+1 ⌊log⁡k∣n∣⌋+1。

    A. 正确 B. 错误

单选题

  1. 当输入为"100 7"时,输出为( )。

    A. 202

    B. 1515

    C. 244

    D. 1754

  2. 当输入为"-255 8"时,输出为( )。

    A. 1400

    B. 1401

    C. 417

    D. 400

  3. 当输入为"1000000 19"时,输出为( )。

    A. BG939

    B. 87GIB

    C. 1CD428

    D. 7CF1B

判断题答案及解析
  1. 正确 (A)
    算法循环次数与 n 的绝对值以 k 为底的对数成正比,时间复杂度为 O(log_k |n|),简写为 O(log_k n)。
  2. 错误 (B)
    删除 char 类型转换后,程序将直接输出整数而非字符,结果格式改变。
  3. 错误 (B)
    负进制转换的位数不一定等于 ⌊log_k|n|⌋+1,例如 n=2, k=2 时输出 "110"(3 位),而公式给出 2 位。
单选题答案及解析
  1. A. 202

    100 的负七进制计算:

    100 ÷ (-7) = -14 余 2 → 低位 2

    -14 ÷ (-7) = 2 余 0 → 0

    2 ÷ (-7) = 0 余 2 → 高位 2

    结果为 "202"。

  2. B. 1401

    -255 的负八进制计算:

    -255 → 余 1,n=32

    32 → 余 0,n=-4

    -4 → 余 4,n=1

    1 → 余 1,n=0

    逆序输出为 "1401"。

  3. B. 87GIB

    1000000 的负十九进制计算:

    余数依次为 11(B)、18(I)、16(G)、7、8,逆序为 "87GIB"。


专栏推荐:信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html


各种学习资料,助力大家一站式学习和提升!!!

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"##########  一站式掌握信奥赛知识!  ##########";
	cout<<"#############  冲刺信奥赛拿奖!  #############";
	cout<<"######  课程购买后永久学习,不受限制!   ######";
	return 0;
}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"跟着王老师一起学习信奥赛C++";
	cout<<"    成就更好的自己!       ";
	cout<<"  csp信奥赛一等奖属于你!   ";
	return 0;
}
相关推荐
良木生香1 小时前
【C++初阶】C++入门相关知识(1):C++历史 & 第一个C++程序 & 命名空间
c语言·开发语言·c++
寻寻觅觅☆10 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
fpcc10 小时前
并行编程实战——CUDA编程的Parallel Task类型
c++·cuda
ceclar12311 小时前
C++使用format
开发语言·c++·算法
lanhuazui1012 小时前
C++ 中什么时候用::(作用域解析运算符)
c++
charlee4412 小时前
从零实现一个生产级 RAG 语义搜索系统:C++ + ONNX + FAISS 实战
c++·faiss·onnx·rag·语义搜索
老约家的可汗12 小时前
初识C++
开发语言·c++
crescent_悦12 小时前
C++:Product of Polynomials
开发语言·c++
小坏坏的大世界13 小时前
CMakeList.txt模板与 Visual Studio IDE 操作对比表
c++·visual studio