信息学奥赛初赛天天练-26-CSP-J2023基础题攻略,组合数学、高精度算法、计算机存储奥秘与操作系统实践

本文主要是介绍信息学奥赛初赛天天练-26-CSP-J2023基础题攻略,组合数学、高精度算法、计算机存储奥秘与操作系统实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PDF文档公众号回复关键字:20240611
在这里插入图片描述

单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)

6 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息,则小明一共有( )种选择时间段的方案。

A 31

B 18

C 21

D 33

7 以下关于高精度运算的说法错误的是( )。

A 高精度计算主要是用来处理大整数或需要保留多位小数的运算。

B 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商。

C 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。

D 高精度加法运算的关键在于逐位相加并处理进位。

13 在计算机中,以下哪个选项描述的数据存储容量最小?( )

A. 字节(byte)

B. 比特(bit)

C. 字(word)

D. 千字节(kilobyte)

14 一个班级有10个男生和12个女生。如果要选出一个3人的小组,并且小组中必须至少包含1个女生,那么有多少种可能的组合?( )
A 1420
B 1770
C 1540
D 2200

15 以下哪个不是操作系统?( )

A Linux

B Windows

C Android

D HTML

2 相关知识点

1) 枚举法

枚举法是训练我们逻辑思维严密性的一种数学逻辑

在计算的过程中,我们一定要遵循枚举法的思路,把所有的情况,按照一定的顺序,一一列举出来

所以我们在学习枚举法的时候,一定要从小到大一一列举,不重不漏

例题

有红色和蓝色两种文具盒,小黄人要把8只相同的铅笔放到这两个文具盒中,每个文具盒至少放一支铅笔,那么一共有多少种不同的方法?

答案 7种

分析

红色和蓝色总共8只

每个文具盒子至少一只,固定红色最少1只,最多7只,从红色从小到大顺序枚举,可以做到不重不漏

总共有红色和蓝色2种,红色固定后,蓝色也固定了

红色  蓝色1    72    63    54    45    36    27    1

2) 组合

从n个不同元素中,任取m个元素,并成一组,叫做从n个 不同元素中取出m个元素的一个组合

从n个不同元素中选出来的m个元素,和顺序无关

例题

有10个人,规定相互通话一次,共通话多少次?

答案 45次

分析

2人通过,A与B通话1次,也是B与A通话1次,没有顺序区别

从10个里面任意选2人进行通话

C(10,2)=10*9/2=45

3) 高精度

高精度加法

1 按位相加,累加后数字大于9(有2位产生时),需要借助进位变量记录进位数

2 进位数参与下一位累加计算

高精度减法

按位相减 减后如果当前为数字小于0,需要向高位借1当10

高精度乘法

1 从个位开始,逐位相乘 ,本次相乘下标分别i,j 则 相乘结果保存下标i+j-1,可通过模拟2位相乘得出

2 逐位相乘时先不进位,此时结果数组中可能有2位数存在

3 相乘结束后,再逐位进位

4 2数相乘后的位数,最大是2数位数之和

// a b 数组为参与相乘的2个数  ans数组为相乘的结果
void mult(int a[], int b[], int ans[]){int i, j, len;//i j 分别代表2乘数当前参与相乘的位数for(i = 1; i <= a[0]; i++){for(j = 1; j <= b[0]; j++) {//相乘结果下标为i+j-1 用2位数简单模拟归纳ans[i+j-1] += a[i] * b[j];//相乘结果先不进位,后面统一进位}}len = a[0] + b[0];//2数相乘位数最大为2数位数之和for(i = 1; i < len; i++) {//循环进位ans[i + 1] += ans[i] / 10;//进位ans[i] %= 10;//当前只保留最后一位}while(ans[i] == 0 && i > 1)//计算结果的位数 - 从最高位开始,为0的位去除i--;ans[0] = i;//结果位数赋值给ans[0]
}

高精度除法-高精度除以单精度

1 从高位开始, 需要注意加上高位余数

2 当前位商保存ans 余数保留参与下一次除法运算

3 结果位数最大为被除数的位数 ,同时去除高位前导0

高精度代码参考

https://www.cnblogs.com/myeln/articles/14587929.html

3 思路分析

6 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息,则小明一共有( )种选择时间段的方案。

A 31

B 18

C 21

D 33

答案 B

分析

分类枚举,7个空闲时间段,至少选1个并且2个时间段之间要间隔至少2个空闲时间段

选1个时间段来练习

7种

7个空闲时间段人选哪一个都行

选2个时间段来练习

10种
1和4,1和5,1和6,1和7

2和5,2和6,2和7

3和6,3和7

4和7

选3个时间段来练习

1种

1和4和7

把1个时间段,2个时间段和3个时间段相加

7+10+1=18 种

7 以下关于高精度运算的说法错误的是( )。

A 高精度计算主要是用来处理大整数或需要保留多位小数的运算。

B 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商。

C 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。

D 高精度加法运算的关键在于逐位相加并处理进位。

答案 C

分析

A 正确,高精度计算主要用于超出数据类型范围的大整数运算和小数位数过多超出数据类型存储范围的运算

B 正确,符合大整数除以小整数(高精度除以整数)的逻辑

C 错误,高精度乘法是其中一个数的每一位去和另外一个数的每一位相乘,是双重循环,运算时间和2个数的位数都有关

D 正确

13 在计算机中,以下哪个选项描述的数据存储容量最小?( )

A. 字节(byte)

B. 比特(bit)

C. 字(word)

D. 千字节(kilobyte)

答案 B

分析

比特是计算机中最基本的存储单元,它代表数字信息的最小单位。比特只能表示两种状态之一,通常用0和1来表示

字节(byte)是计算机存储容量的基本单位之一,通常用来表示数据的大小或存储空间的大小。一个字节由8个比特组成

千字节(kilobyte) 简称KB,1KB等于1024字节

字由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。

所以数据存储容量最小的是比特,选B

14 一个班级有10个男生和12个女生。如果要选出一个3人的小组,并且小组中必须至少包含1个女生,那么有多少种可能的组合?( )
A 1420
B 1770
C 1540
D 2200
答案: A

分析

选出3人小组,至少包含1名女生,可以进行枚举
选1名女生,2名男生
C(12,1) * C(10,2) = 12 * 10 * 9 / 2 = 540 选2名女生,1名男生
C(12,2) * C(10,1) =12 * 11 / 2 * 10 =660选3名女生
C(12,3) = 12 * 11 * 10 /(3 * 2 * 1 ) = 220根据加法原理 
C(12,1) * C(10,2) + C(12,2) * C(10,1)+C(12,3) =540+660+220= 1420

15 以下哪个不是操作系统?( )

A Linux

B Windows

C Android

D HTML

答案: D

分析

Linux是操作系统,包括Web服务器、数据库服务器、文件服务器等。它也适用于软件开发、应用程序测试和系统管理,以及嵌入式系统如智能手机、网络路由器

Windows是操作系统,是由微软公司开发的一款操作系统,已经成为全球最流行的操作系统之一,广泛应用于个人电脑、服务器、移动设备等各种计算场景

Android 是一个由谷歌开发的操作系统,主要用于移动设备,特别是智能手机和平板电脑。它是基于Linux内核的开源系统,提供了丰富的API和支持开发者进行定制开发

HTML不是操作系统,超文本标记语言,HyperText Markup Language,是用于创建网页的标准标记语言

这篇关于信息学奥赛初赛天天练-26-CSP-J2023基础题攻略,组合数学、高精度算法、计算机存储奥秘与操作系统实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052957

相关文章

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche