多题目

CSPJ2021 阅读程序2  

#include <iostream>
#include <string>
using namespace std;

char base[64] ;
char table[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 (string str) {
	string ret;
	int i;
	for (i=0; i < str.size(); i +=4) {
		ret +=table[str [1]] <<2|table[str[1+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]];
	}
	return ret;
}

int main () {
	init () ;
	cout<<(int)table[0])<<endl;

	string str;
	cin>>str;
	cout<<decode (str) <<endl;
	return 0;
}

第1题 判断

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

A.
正确
B.
错误

第2题 判断

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

A.
正确
B.
错误

第3题 判断

输出的第一行为“-1”。

A.
正确
B.
错误

第4题 单选

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

A.

Θ(sqrt(n))

B.

Θ(n)

C.

Θ(nlog n)

D.

Θ(n^2)

第5题 单选

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

A.

“csp”

B.

“csq”

C.

“CSP”

D.

“Csp”

第6题 单选

当输入为“Y2NmIDIWMjE=”时,输出的第二行为()。

A.

“ccf2021”

B.

“ccf2022”

C.

“ccf 2021”

D.

“ccf 2022”

发表评论

登录 后再回复