2254 . 综合题

完善程序【CSP 2021 入门级第一轮2】

#include <stdio.h>
#include <string.h>
using namespace std;
char base[64];
char table[256];
char str[256];
char ans[256];

void init()
{
 for (int i = 0; i < 26; i++) base[i] = 'A' + i;
 for (int i = 0; i < 26; i++) base[26 + i] = 'a' + i;
 for (int i = 0; i < 10; i++) base[52 + i] = '0' + i;
 base[62] = '+', base[63] = '/';

 for (int i = 0; i < 256; i++) table[i] = 0xff;
 for (int i = 0; i < 64; i++) table[base[i]] = i;
 table['='] = 0;
}

string decode(char *str)
{
 char *ret = ans;
 int i, len = strlen(str);
 for (i = 0; i < len; i += 4) {
  (*ret++) = table[str[i]] << 2 | table[str[i + 1]] >> 4;
  if (str[i + 2] != '=')
   (*ret++) = (table[str[i + 1]] & 0x0f) << 4 | table[str[i + 2]] >> 2;
  if(str[i + 3] != '=')
   (*ret++) = table[str[i + 2]] << 6 | table[str[i + 3]];
 }
}

int main()
{
 init();
 printf("%d\n", (int)table[0]);

 scanf("%s", str);
 decode(str);
 printf("%s\n", ans);
 return 0;
}
1 . (判断题)

输出的第二行一定是由小写字母、大写字母、数字和 +、 /、= 构成的字符串。( )

2 . (判断题)

可能存在输入不同,但输出的第二行相同的情形。( )

3 . (判断题)

输出的第一行为 -1 。( )

4 . (单选题)

设输入字符串长度为 n,decode 函数的时间复杂度为( )

5 . (单选题)

当输入为 Y3Nx 时,输出的第二行为()。

6 . (单选题)

当输入为 Y2NmIDIwMjE= 时,输出的第二行为( )。