题目信息

题目类型
提高级
题目年份
2021
题目题型
综合题
关 键 词

题目题干

第18 题
  1. #include <iostream> 
  2.  
  3. #include <string> 
  4.  
  5. using namespace std; 
  6.  
  7.  
  8.  
  9. char base[64]; 
  10.  
  11. char table[256]; 
  12.  
  13.  
  14.  
  15. void init() 
  16.  
  17.  
  18. for (int i = 0; i < 26; i++) base[i] = 'A' + i; 
  19.  
  20. for (int i = 0; i < 26; i++) base[26 + i] = 'a' + i; 
  21.  
  22. for (int i = 0; i < 10; i++) base[52 + i] = '0' + i; 
  23.  
  24. base[62] = '+', base[63] = '/'
  25.  
  26.  
  27.  
  28. for (int i = 0; i < 256; i++) table[i] = 0xff; 
  29.  
  30. for (int i = 0; i < 64; i++) table[base[i]] = i; 
  31.  
  32. table['='] = 0; 
  33.  
  34.  
  35.  
  36.  
  37. string encode(string str) 
  38.  
  39.  
  40. string ret; 
  41.  
  42. int i; 
  43.  
  44. for (i = 0; i + 3 <= str.size(); i += 3) { 
  45.  
  46. ret += base[str[i] >> 2]; 
  47.  
  48. ret += base[(str[i] & 0x03) << 4 | str[i + 1] >> 4]; 
  49.  
  50. ret += base[(str[i + 1] & 0x0f) << 2 | str[i + 2] >> 6]; 
  51.  
  52. ret += base[str[i + 2] & 0x3f]; 
  53.  
  54.  
  55. if (i < str.size()) { 
  56.  
  57. ret += base[str[i] >> 2]; 
  58.  
  59. if (i + 1 == str.size()) { 
  60.  
  61. ret += base[(str[i] & 0x03) << 4]; 
  62.  
  63. ret += "=="
  64.  
  65.  
  66. else { 
  67.  
  68. ret += base[(str[i] & 0x03) << 4 | str[i + 1] >> 4]; 
  69.  
  70. ret += base[(str[i + 1] & 0x0f) << 2]; 
  71.  
  72. ret += "="
  73.  
  74.  
  75.  
  76. return ret; 
  77.  
  78.  
  79.  
  80.  
  81. string decode(string str) 
  82.  
  83.  
  84. string ret; 
  85.  
  86. int i; 
  87.  
  88. for (i = 0; i < str.size(); i += 4) { 
  89.  
  90. ret += table[str[i]] << 2 | table[str[i + 1]] >> 4; 
  91.  
  92. if (str[i + 2] != '='
  93.  
  94. ret += (table[str[i + 1]] & 0x0f) << 4 | table[str[i + 2]] >> 2; 
  95.  
  96. if (str[i + 3] != '='
  97.  
  98. ret += table[str[i + 2]] << 6 | table[str[i + 3]]; 
  99.  
  100.  
  101. return ret; 
  102.  
  103.  
  104.  
  105.  
  106. int main() 
  107.  
  108.  
  109. init(); 
  110.  
  111. cout << int(table[0]) << endl; 
  112.  
  113.  
  114.  
  115. int opt; 
  116.  
  117. string str; 
  118.  
  119. cin >> opt >> str; 
  120.  
  121. cout << (opt ? decode(str) : encode(str)) << endl; 
  122.  
  123. return 0; 
  124.  

假设输入总是合法的(一个整数和一个不含空白字符的字符串,用空格隔开),完成下面的判断题和单选题:aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

判断

程序总是先输出一行一个整数,再输出一行一个字符串。( )aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确
B.错误
 
判断

对于任意不含空白字符的字符串 str1,先执行程序输入“0 str1”,得到输出的第aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

二行记为 str2;再执行程序输入“1 str2”,输出的第二行必为 str1。( )aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

B.错误
 
判断

当输入为“1 SGVsbG93b3JsZA==”时,输出的第二行为“HelloWorld”。( )aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确
B.错误
 
单选

设输入字符串长度为 n,encode 函数的时间复杂度为( )。aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.Θ,√n
B.Θ(n)
C.Θ(n log n)
D.Θ(n^2 )
 
单选

输出的第一行为( )。aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.“0xff”
B.“255”
C.“0xFF”
D.“-1”
 
单选

(4 分)当输入为“0 CSP2021csp”时,输出的第二行为( )。aj5100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.“Q1NQMjAyMWNzcAv=”
B.“Q1NQMjAyMGNzcA==”
C.“Q1NQMjAyMGNzcAv=”
D.“Q1NQMjAyMWNzcA==”
 

答案解析

相关题目

第19 (分数背包)小S有n块蛋糕,编号从1到n第i块蛋糕的价值是wi, 体积是vi。他有一个大小为B的盒子来装这些蛋糕,也就是说装入盒子的 蛋糕的体积总和不能超过B。 他打算选择一些蛋糕装入盒子,
第18 题 #include <iostream>    #include <string>    using namespace std;        char base[
第17 题 #include <algorithm>    #include <iostream>    using namespace std;        int n, 
第 16 #include <iostream>    #include <cmath>    using namespace std;        const double
第 15 题 有如下的有向图,节点为 A, B, … , J, 其中每条边的长度都标在图中。则节点 A 到节点 J 的最短路径长度为( )。 A.16 B.19 C.20 D.22
第 14 题 设一个三位数a, b, c 均为 1~9 之间的整数,若以 a、 b、 c 作为三角形的三条边可以构成等腰三角形(包括等边),则这样的 n 有( )个。 A.81 B.120 C.16
第 13 题 有 88 个苹果从左到右排成一排,你要从中挑选至少一个苹果,并且不能同时挑选相邻的两个苹果,一共有( )种方案。  A. 36  B. 48  C. 54  D. 64
第 12 题 斐波那契数列的定义为:F1=1,F2=1,Fn=Fn-1+Fn-2 (n>=3)。现在用如下程序来计算斐波那契数列的第 n 项,其时间复杂度为( )。 F(n): if n&l
第 11 题 有如下递归代码 solve(t, n):    if t=1 return 1    else return 5*solve(t-1,n) mod n  则 solve(23,23)
第 10 题 定义一种字符串操作为交换相邻两个字符。将 DACFEB 变为ABCDEF 最少需要 ( ) 次上述操作。  A. 7  B. 8  C. 9  D. 6

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢