信息学奥赛初赛天天练-36-CSP-J2021阅读程序-ASCII、运算符优先级、二进制补码存储、模拟算法应用

news2024/10/5 23:33:47

PDF文档公众号回复关键字:20240626

在这里插入图片描述

2021 CSP-J 阅读程序2

1 阅读程序(判断题1.5分 选择题3分 共计40分 )

#include<stdio.h>
#include<string.h>

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;
}

void 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;	
}

判断题

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

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

24.输出的第一行为"-1" ( )

单选题

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

A. O(sqrt(n))

B. O(n)

C. O(n log n)

D. O(n^2)

26.当输入为"Y3Nx"时,输出的第二行为( )

A. “csp”

B. “csq”

C. “CSP”

D. “Csp”

27.(3.5分)当输入为"Y2NmIDIwMjE"时,输出的第二行为( )

A. “ccf2021”

B. “ccf2022”

C. “ccf 2021”

D. “ccf 2022”

2 相关知识点

1) ASCII码

字符是一种图形符号,不同国家不同地区都有自己特殊的字符,于是就衍生了“字符集合”这个名词。其中ASCII (American Standard Code for Information Interchange: 美国信息交换标准代码)是国际通用的标准字符集

例如

char a='0';
char b='P';
char c='@';
char c='65';//ascii 码 对应大写字母A

ASCII码表

2) 运算符优先级

本题涉及到的位运算的优先级如下

位移 > 按位与  > 按位或

<<  >    &    >   |
  

3) 0xff

计算机存储使用二进制补码存储

0xff对应二进制补码(如果存储在1个字节中,二进制第1位为符号位,1开头为负数)

11111111

反码为:

11111110

原码为

10000001

对应十进制-1

3 思路分析

本程序主要使用模拟算法,计算量巨大,根据程序逻辑先初始化如下表格

本程序初始化base数组如下

table数组如下

常用ASCII

输入字符串后,把字符串每4个一组进行处理,分别进行如下3段程序处理

1
(*ret++) =table[str[i]]<<2|table[str[i+1]]>>4;
2
if(str[i+2]!='=')
	(*ret++)=(table[str[i+1]]&0x0f)<<4|table[str[i+2]]>>2;
3
if(str[i+3]!='=')
	(*ret++)=table[str[i+2]]<<6|table[str[i+3]];
上面3句程序,没句最多输出一个字符,存放到数字ans中
最后输出数组ans

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

分析

计算过程使用小写字母、大写字母、数字作为table的下标,值为0~63,但0 ~ 63 经过decode解码后不一定是这些字符,例如有空格的输出

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

分析

只有输入小写字母、大写字母、数字时,table下标的内容才会找到对应字符进行转换,如果不是这些table的值默认为0xff,转换后输出相同

24.输出的第一行为"-1" ( T )

分析

table[0]没有被赋值,默认赋值为0xff

0xff对应二进制补码(如果存储在1个字节中,二进制第1位为符号位,1开头为负数)

11111111

反码为:

11111110

原码为

10000001

对应十进制-1

单选题

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

A. O(sqrt(n))

B. O(n)

C. O(n log n)

D. O(n^2)

分析

程序主语一个for循环,长度为n

虽然有i+=4的跳步,达不到sqrt和log

26.当输入为"Y3Nx"时,输出的第二行为( B )

A. “csp”

B. “csq”

C. “CSP”

D. “Csp”

分析

根据列出的表格和输入,对3行代码逐行输出

Y3Nx时,第1行代码,输出c

Y3Nx时,第2行代码,输出s

Y3Nx时,第3行代码,输出q

所以输出csq

27.(3.5分)当输入为"Y2NmIDIwMjE="时,输出的第二行为( C )

A. “ccf2021”

B. “ccf2022”

C. “ccf 2021”

D. “ccf 2022”

分析

根据列出的表格和输入,对3行代码逐行输出

第1个4个字符 Y2Nm

Y2Nm时,第1行代码,输出c

Y2Nm时,第2行代码,输出c

Y2Nm时,第3行代码,输出f

第2个4个字符 IDIw

IDIw时,第1行代码,输出 空格

IDIw时,第2行代码,输出 2

IDIw时,第3行代码,输出 0

第3个4个字符 MjE=

MjE=时,第1行代码,输出 2

MjE=时,第2行代码,输出 1

MjE=时,第3行代码,不满足if判断条件,不输出

所以输出为ccf 2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-23卷积神经网络LeNet

23卷积神经网络LeNet import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义一个卷积神经网络 net nn.Sequential(nn.Conv2d(1, 6, kernel_size5, padding2), # 卷积层1&#xff1a;输入通道数1&#xff0c;输出通道数6&#x…

方法的其他形式——方法使用时常见的问题

示例&#xff1a; public class MethodDemo02 {public static void main(String[] args) {//目标&#xff1a;掌握按照方法的实际业务需求不同&#xff0c;设计出合理的方法形式来解决问题//需求&#xff1a;打印三行Hello World.printfHelloWorld();System.out.println("…

CVPR2024|vivo提出使用对抗微调获得泛化性更强的SAM,分割性能直接登顶 SOTA!

在计算机视觉不断发展的领域中&#xff0c;基础模型已成为一种关键工具&#xff0c;显示出对多种任务的出色适应性。其中&#xff0c;由 Meta AI 开发的 Segment Anything Model&#xff08;SAM&#xff09;在图像分割任务中表现杰出。然而&#xff0c;和其他类似模型一样&…

Python自动化操作:简单、有趣、高效!解放你的工作流程!

今天跟大家分享一套自动化操作流程解决方案&#xff0c;基于Python语言&#xff0c;涉及pyautogui、pyperclip、pythoncom、win32com依赖包。安装命令为&#xff1a; pip install pyautoguipip install pyperclippip install pythoncompip install win32compyautogui 是一个自…

解决“Duplicate keys detected: ‘ ‘.This may cause an update error.”问题

问题原因 出现“Duplicate keys detected”的错误&#xff0c;通常表示在v-for指令中使的:key绑定值有重复。 如果前端是静态数据&#xff0c;一般能自我避免:key绑定值有重复。如果前端是绑定的动态数据&#xff0c;那么需要另外提供一个唯一的键。 在这个例子中&#xff0c…

Xcode安装Simulator失败问题解决方法

Xcode安装Simulator_Runtime失败&#xff0c;安装包离线安装保姆级教程 Xcode更新之后有时候会提示要安装模拟器运行时环境&#xff0c;但是用Xcode更新会因为网络原因&#xff0c;我觉得基本上就是因为苹果服务器的连接不稳定导致的&#xff0c;更可气的是不支持断点续…

链式队列算法库构建

学习贺利坚老师课程,构建链式队列算法库 数据结构之自建算法库——链队&#xff08;链式队列&#xff09;_数据结构函数链队列的算法框架有哪些-CSDN博客文章浏览阅读6.2k次&#xff0c;点赞3次&#xff0c;收藏9次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列…

【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解(包含数据安全处理方案的加密解密)

前言 如何在 Unity 中正确制作一个保存和加载系统&#xff0c;该系统使用JSON 文件来处理保存配置文件&#xff0c;可以保存和加载任何类型对象&#xff01;标题为什么叫小型游戏存储功能呢&#xff1f;因为该存储功能可能只适合存储数据比较单一的情况&#xff0c;它非常的方…

Leetcode 102.目标和

给定一个正整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前添加 ‘-’ &…

AIGC笔记--U-ViT的简单代码实现

1--前言 原论文&#xff1a;All are Worth Words: A ViT Backbone for Diffusion Models 完整可debug的代码&#xff1a;Simple_U-ViT 2--结构 3--简单代码 以视频作为输入&#xff0c;实现上图红色框的计算&#xff1a; import torch import torch.nn as nn from einops im…

6.2 通过构建情感分类器训练词向量

在上一节中&#xff0c;我们简要地了解了词向量&#xff0c;但并没有去实现它。在本节中&#xff0c;我们将下载一个名为IMDB的数据集(其中包含了评论)&#xff0c;然后构建一个用于计算评论的情感是正面、负面还是未知的情感分类器。在构建过程中&#xff0c;还将为 IMDB 数据…

分享一个 MySQL 简单快速进行自动备份和还原的脚本和方法

前言 数据备份和还原在信息技术领域中具有非常重要的作用&#xff0c;不论是人为误操作、硬件故障、病毒感染、自然灾害还是其他原因&#xff0c;数据丢失的风险都是存在的。如果没有备份&#xff0c;一旦数据丢失&#xff0c;可能对个人、企业甚至整个组织造成巨大的损失。 …

2-17 基于matlab的改进的遗传算法(IGA)对城市交通信号优化分析

基于matlab的改进的遗传算法&#xff08;IGA&#xff09;对城市交通信号优化分析。根据交通流量以及饱和流量&#xff0c;对城市道路交叉口交通信号灯实施合理优化控制&#xff0c;考虑到交通状况的动态变化&#xff0c;及每个交叉口的唯一性。通过实时监测交通流量&#xff0c…

部署企业级AI知识库最重要的是什么?✍

随着人工智能技术的迅猛发展&#xff0c;企业级AI知识库成为提升企业管理效率和信息获取能力的重要工具。那么&#xff0c;在部署企业级AI知识库时&#xff0c;最重要的是什么呢&#xff1f;本文将从数据质量、系统可扩展性、用户体验以及智能化这四个关键方面进行详细分析。 …

单片机是否有损坏,怎沫判断

目录 1、操作步骤&#xff1a; 2、单片机损坏常见原因&#xff1a; 3、 单片机不工作的原因&#xff1a; 参考&#xff1a;细讲寄存器读写与Bit位操作原理--单片机C语言编程Bit位的与或非屏蔽运算--洋桃电子大百科P019_哔哩哔哩_bilibili 1、操作步骤&#xff1a; 首先需要…

Objects and Classes (对象和类)

Objects and Classes [对象和类] 1. Procedural and Object-Oriented Programming (过程性编程和面向对象编程)2. Abstraction and Classes (抽象和类)2.1. Classes in C (C 中的类)2.2. Implementing Class Member Functions (实现类成员函数)2.3. Using Classes References O…

第 28 篇 : SSH秘钥登录

1 生成秘钥 ssh-keygen -t rsa ls -a ./.ssh/一直回车就行了 2. 修改配置 vi /etc/ssh/sshd_config放开注释 公钥的位置修改 关闭密码登录 PubkeyAuthentication yes AuthorizedKeysFile .ssh/id_rsa.pub PasswordAuthentication no3. 下载id_rsa私钥, 自行解决 注意…

Vue中数组的【响应式】操作

在 Vue.js 中&#xff0c;当你修改数组时&#xff0c;Vue 不能检测到以下变动的数组&#xff1a; 当你利用索引直接设置一个项时&#xff0c;例如&#xff1a;vm.items[indexOfItem] newValue当你修改数组的长度时&#xff0c;例如&#xff1a;vm.items.length newLength 为…

常见图像分割模型介绍:FCN、U-Net、SegNet、Mask R-CNN

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…