信息学奥赛初赛天天练-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 7
2 6
3 5
4 4
5 3
6 2
7 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,是用于创建网页的标准标记语言
作者:newcode 更多资源请关注纽扣编程微信公众号
从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习