# 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 的正整数,完成下面的判断题和单选题:
判断题
-
该算法的时间复杂度为 O ( l o g k n ) O(log_kn) O(logkn)。
A. 正确 B. 错误
-
删除第 23 行的强制类型转换,程序的行为不变。
A. 正确 B. 错误
-
除非输入的 n 为 0,否则程序输出的字符数为 ⌊ l o g k ∣ n ∣ ⌋ + 1 ⌊log_k∣n∣⌋+1 ⌊logk∣n∣⌋+1。
A. 正确 B. 错误
单选题
-
当输入为"100 7"时,输出为( )。
A. 202
B. 1515
C. 244
D. 1754
-
当输入为"-255 8"时,输出为( )。
A. 1400
B. 1401
C. 417
D. 400
-
当输入为"1000000 19"时,输出为( )。
A. BG939
B. 87GIB
C. 1CD428
D. 7CF1B
判断题答案及解析
- 正确 (A)
算法循环次数与 n 的绝对值以 k 为底的对数成正比,时间复杂度为 O(log_k |n|),简写为 O(log_k n)。 - 错误 (B)
删除char类型转换后,程序将直接输出整数而非字符,结果格式改变。 - 错误 (B)
负进制转换的位数不一定等于 ⌊log_k|n|⌋+1,例如 n=2, k=2 时输出 "110"(3 位),而公式给出 2 位。
单选题答案及解析
-
A. 202
100 的负七进制计算:
100 ÷ (-7) = -14 余 2 → 低位 2
-14 ÷ (-7) = 2 余 0 → 0
2 ÷ (-7) = 0 余 2 → 高位 2
结果为 "202"。
-
B. 1401
-255 的负八进制计算:
-255 → 余 1,n=32
32 → 余 0,n=-4
-4 → 余 4,n=1
1 → 余 1,n=0
逆序输出为 "1401"。
-
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;
}