信息学奥赛课课通(C++)第9单元-电子课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《信息学奥赛课课通(C++)第9单元-电子课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息学 奥赛课课通 单元 电子 课件
- 资源描述:
-
1、 高等教育出版社高等教育出版社 第第 9 单元单元 基本算法基本算法作者:林厚从作者:林厚从信息学奥赛课课通信息学奥赛课课通(C+)(C+)高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)第第 1 课课 进制转换进制转换学习目标学习目标1.理解二进制计数原理。理解二进制计数原理。2.掌握不同进制数之间的转换原理和实现方法。掌握不同进制数之间的转换原理和实现方法。3.学会使用进制转换的原理解决一些实际问题。学会使用进制转换的原理解决一些实际问题。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)进制进制实际生活中,人们使用十进制计数。但是,任何信息在实际生活
2、中,人们使用十进制计数。但是,任何信息在计算机中都是采用二进制编码表示的,有时还会用到十六计算机中都是采用二进制编码表示的,有时还会用到十六进制。进制。十进制计数原理采用十进制计数原理采用“0”“9”十个符号,运算规则为十个符号,运算规则为“逢十进一逢十进一”,基数是十。,基数是十。二进制计数原理采用二进制计数原理采用“0”和和“1”两个符号,运算规则两个符号,运算规则是是“逢二进一逢二进一”,基数是二。,基数是二。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)进制进制 显然,十进制中的数显然,十进制中的数“10”和二进制中的和二进制中的“10”、十六、十六进制中的进制中
3、的“10”是不一样的。为了区分,我们分别表示成是不一样的。为了区分,我们分别表示成(10)10、(、(10)2、(、(10)16。有时也会在一个数的后面加。有时也会在一个数的后面加上英文字母上英文字母D、B、H来分别表示该数是十进制数、二进制来分别表示该数是十进制数、二进制数或者十六进制数,如数或者十六进制数,如96D、110B、2B3FH等。等。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)1.进制转换的基本原理进制转换的基本原理不同进制数之间转换的基本原理就是依据其不同进制数之间转换的基本原理就是依据其“运算规则运算规则”和和“权权”的含义进行乘除运算。的含义进行乘除
4、运算。(1)二进制数转换成十进制数二进制数转换成十进制数一个二进制数转换成十进制数的方法是将其表示成一个二进制数转换成十进制数的方法是将其表示成“按按权展开式权展开式”,再按十进制运算规则求和。这种方法可以扩,再按十进制运算规则求和。这种方法可以扩展到任意展到任意 n 进制。进制。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)进制进制(2)二进制数与十六进制数之间的相互转换二进制数与十六进制数之间的相互转换二进制数转换成十六进制数的方法是以小数点为准,往二进制数转换成十六进制数的方法是以小数点为准,往前、往后前、往后“四位一段四位一段”分别转换成十六进制数再求和,不分别转
5、换成十六进制数再求和,不满四位要补齐。满四位要补齐。(3)十进制数转换成二进制十进制数转换成二进制十进制数转换成二进制要将整数和小数分开转换,最后十进制数转换成二进制要将整数和小数分开转换,最后再求和。整数的转换方法是:不断除以再求和。整数的转换方法是:不断除以 2 求余数,最后反求余数,最后反序输出;小数的转换方法是:不断乘以序输出;小数的转换方法是:不断乘以 2,将每次得到的整,将每次得到的整数部分依次输出,并且每次都将整数部分恢复为数部分依次输出,并且每次都将整数部分恢复为 0。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)2.进制转换的应用举例进制转换的应用举例例
6、例 1、进制转换、进制转换【问题描述问题描述】将任意一个将任意一个 n 进制整数进制整数 x 转换成十进制。转换成十进制。【输入格式输入格式】第第 1 行行 1 个正整数个正整数 n,1n10;第第 2 行行 1 个整数个整数 x。【输出格式输出格式】一行一个数,表示转换得到的十进制数,保证答案不超过一行一个数,表示转换得到的十进制数,保证答案不超过 2147483647。【输入样例输入样例】2100110【输出样例输出样例】38高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【问题分析问题分析】读入读入 n 和和 x,根据,根据 n 和和 x 的位数,分别求出的位数,分别
7、求出 x 的每一位对应的的每一位对应的“权值权值”,然后穷举每一位,将它乘以该位对应的权值,累加,然后穷举每一位,将它乘以该位对应的权值,累加便可得到结果。便可得到结果。更高效、更简洁的算法是采用更高效、更简洁的算法是采用“秦九韶公式秦九韶公式”。对于样例对于样例输入,可以这样计算:输入,可以这样计算:(1*2)0)*2+0)*2+1)*2+1)*2+0=38 具体实现采用具体实现采用“迭代法迭代法”,用一个变量不断乘以,用一个变量不断乘以n,再加,再加上下一位上下一位xi。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)/p9-1-1#includeusing names
8、pace std;int main()freopen(”change.in”,”r”,stdin);freopen(”change.out”,”w”,stdout);int n,ans=0,i=0;char s32;scanf(”%dn”,&n);while(si=getchar()!=n)ans=ans*n+(si-48);i+;printf(”%dn”,ans);return 0;高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例2、汽车牌照、汽车牌照【问题描述问题描述】小小 Y 最近发现街上的汽车越来越多了,作为汽车的重要标志最近发现街上的汽车越来越多了,作为汽车的
9、重要标志汽车汽车牌照也是越来越不够用了,已经从以前的十进制发展到三十六进制了,牌照也是越来越不够用了,已经从以前的十进制发展到三十六进制了,以前的一个汽车牌照以前的一个汽车牌照“苏苏 D88888”,现在的牌照,现在的牌照“苏苏 D0YY11”。小小 Y 突发其想,想知道他看到的大量汽车牌照中最近的两个汽车牌照突发其想,想知道他看到的大量汽车牌照中最近的两个汽车牌照相差多少?相差多少?【输入格式输入格式】若干行若干行(不超过不超过 500000 行行),每行为一个汽车牌照。,每行为一个汽车牌照。每个汽车牌照为一个每个汽车牌照为一个 7 位的字符串,格式为位的字符串,格式为 SD,其中一个,其中
10、一个 表示一个表示一个 09 或或AZ,所涉及的字母均为大写。,所涉及的字母均为大写。【输出格式输出格式】一行一个数,表示最接近的两个汽车牌照之间的差值,要求为十进制数。一行一个数,表示最接近的两个汽车牌照之间的差值,要求为十进制数。【输入样例输入样例】SD12345SD88888SD22222SD99999【输出样例输出样例】1678245高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例3、数列数列【问题描述问题描述】给定一个正整数给定一个正整数 k,把所有,把所有 k 的方幂及所有有限个互不相等的方幂及所有有限个互不相等的的 k 的方幂之和构成一个递增的序列。例如,
11、当的方幂之和构成一个递增的序列。例如,当 k=3 时,时,这个序列是:这个序列是:1,3,4,9,10,12,13,请求出这个序列的第请求出这个序列的第 n 项的值项的值(用十进制数表示用十进制数表示)。【输入格式输入格式】一行两个正整数一行两个正整数 k 和和 n,之间用一个空格隔开,且,之间用一个空格隔开,且 3k15,10n1000。【输出格式输出格式】一行一个正整数。一行一个正整数。【输入样例输入样例】3 100【输出样例输出样例】981高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)实践巩固实践巩固高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+
12、)第第 2 课课 高精度运算高精度运算学习目标学习目标1.体会高精度运算的应用场合。体会高精度运算的应用场合。2.熟练掌握高精度加法和乘法运算。熟练掌握高精度加法和乘法运算。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)高精度运算高精度运算在编程进行数值运算时,有时会遇到运算的精度要求特在编程进行数值运算时,有时会遇到运算的精度要求特别高,远远超过各种数据类型的精度范围;有时数据又特别高,远远超过各种数据类型的精度范围;有时数据又特别大,远远超过各种数据类型的极限值。这种情况下,就别大,远远超过各种数据类型的极限值。这种情况下,就需要进行需要进行“高精度运算高精度运算”。
13、高精度运算首先要处理好数据的接收和存储问题,其次高精度运算首先要处理好数据的接收和存储问题,其次要处理好运算过程中的要处理好运算过程中的“进位进位”和和“借位借位”问题。问题。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例1、高精度、高精度加法加法【问题描述问题描述】输入两个输入两个 1000 位以内的正整数,输出它们的和。位以内的正整数,输出它们的和。【输入样例输入样例】123456789987654321【输出样例输出样例】1111111110高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【问题分析问题分析】用字符串的方式读入两个高精度数,转
14、存到两个整型数组用字符串的方式读入两个高精度数,转存到两个整型数组 a 和和 b 中,如图中,如图 9.2-1 所示,模拟加法的过程,从低位所示,模拟加法的过程,从低位(第第 0 位位)开始对应位开始对应位 ai 和和 bi 相加,同时处理进位,结果存储到另相加,同时处理进位,结果存储到另一个数组一个数组 c 中。最后,从高位到低位输出中。最后,从高位到低位输出 ci。参考程序见教材参考程序见教材329页。页。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例2、高精度乘法高精度乘法【问题描述问题描述】输入两个输入两个 100 位以内的正整数,输出它们的乘积。位以内的正整
15、数,输出它们的乘积。【输入样例输入样例】123456789987654321【输出样例输出样例】121932631112635269高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【问题分析问题分析】如图如图 9.2-2 所示,模拟所示,模拟“竖式竖式”乘法的过程,用一个数乘法的过程,用一个数的每一位的每一位 ai(从低位开始从低位开始)逐位与另一个数的每一位逐位与另一个数的每一位 bj 相相乘,结果存储到乘,结果存储到 ci+j 位,同时处理好进位。位,同时处理好进位。参考程序见教材参考程序见教材330页。页。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(
16、C+)例例3、n!的精确值的精确值【问题描述问题描述】输入输入 n,输出,输出 n!的精确值,的精确值,n!=123n,1n2 时,存在递推关系:时,存在递推关系:f(n)=f(n-1)+f(n-2)。在递推问题模型中,每个数据项都与它前面的若干个在递推问题模型中,每个数据项都与它前面的若干个数据项(或后面的若干个数据项)存在一定的关联,这种关数据项(或后面的若干个数据项)存在一定的关联,这种关联一般是通过一个联一般是通过一个“递推关系式递推关系式”来描述的。求解问题时,来描述的。求解问题时,需要从初始的一个或若干数据项出发,通过递推关系式逐步需要从初始的一个或若干数据项出发,通过递推关系式逐
17、步推进,从而推导计算出最终结果。这种求解问题的方法叫推进,从而推导计算出最终结果。这种求解问题的方法叫“递推法递推法”。其中,初始的若干数据项称为。其中,初始的若干数据项称为“递推边界递推边界”。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)递推递推解决递推问题有三个重点:建立正确的递推关系式;分解决递推问题有三个重点:建立正确的递推关系式;分析递推关系式的性质;根据递推关系式编程求解。析递推关系式的性质;根据递推关系式编程求解。递推法分为递推法分为“顺推顺推”和和“倒推倒推”两类模型。所谓顺推,两类模型。所谓顺推,就是从问题的边界条件就是从问题的边界条件(初始状态初始状
18、态)出发,通过递推关系式依出发,通过递推关系式依次从前往后递推出问题的解;所谓倒推,就是在不知道问题次从前往后递推出问题的解;所谓倒推,就是在不知道问题的边界条件的边界条件(初始状态初始状态)下,从问题的最终解下,从问题的最终解(目标状态或某个目标状态或某个中间状态中间状态)出发,反过来推导问题的初始状态。出发,反过来推导问题的初始状态。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例1、铺瓷砖、铺瓷砖【问题描述问题描述】用红色的用红色的 11 和黑色的和黑色的 22 两种规格的瓷砖不重叠地铺满两种规格的瓷砖不重叠地铺满 n3 的路面,求出有多少种不同的铺设方案。的路面
19、,求出有多少种不同的铺设方案。【输入格式输入格式】一行一个整数一行一个整数 n,0n1000。【输出格式输出格式】一行一个整数,为铺设方案的数量模一行一个整数,为铺设方案的数量模12345的结果。的结果。【输入样例输入样例】2【输出样例输出样例】3高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【问题分析问题分析】用用 f(n)表示表示 n3 的路面有多少种不同的铺设方案。把路面的路面有多少种不同的铺设方案。把路面看成看成 n 行行 3 列,则问题可以分成两种情况考虑,一种是最列,则问题可以分成两种情况考虑,一种是最后一行用后一行用 3 块块 11 的瓷砖铺设;另一种是最后
20、两行用的瓷砖铺设;另一种是最后两行用 1 块块 22 和和 2 块块 11 的瓷砖铺设的瓷砖铺设(最后两行就有两种铺法最后两行就有两种铺法),第,第一种铺法就转换为一种铺法就转换为 f(i-1)的问题了,第二种铺法就转换成的问题了,第二种铺法就转换成 f(i-2)的问题了。根据加法原理,得到的递推关系式为的问题了。根据加法原理,得到的递推关系式为 f(i)=f(i-1)+f(i-2)2,边界为,边界为 f(0)=1,f(1)=1。参考程序见教材参考程序见教材350-351页。页。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例2、彩带、彩带【问题描述问题描述】一中一中
21、90 周年校庆,小林准备用一些白色、蓝色和红色周年校庆,小林准备用一些白色、蓝色和红色的彩带来装饰学校超市的橱窗,他希望满足以下两个条件:的彩带来装饰学校超市的橱窗,他希望满足以下两个条件:(1)相同颜色的彩带不能放在相邻的位置;相同颜色的彩带不能放在相邻的位置;(2)一条蓝色的彩带必须放在一条白色的彩带和一条红色的一条蓝色的彩带必须放在一条白色的彩带和一条红色的彩带中间。彩带中间。现在,他想知道满足要求的放置彩带的方案数有多少种。现在,他想知道满足要求的放置彩带的方案数有多少种。例如,如图例如,如图 9.4-1 所示为橱窗宽度所示为橱窗宽度n=3 的所有放置方案,共的所有放置方案,共 4 种
22、。种。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【输入格式输入格式】一行一个整数一行一个整数 n,表示橱窗宽度,表示橱窗宽度(或者说彩带数目或者说彩带数目)。【输出格式输出格式】一行一个整数,表示装饰橱窗的彩带放置方案数。一行一个整数,表示装饰橱窗的彩带放置方案数。【样例输入样例输入】3【样例输出样例输出】4【数据规模数据规模】对对 30%的数据满足:的数据满足:1n15。对对 100%的数据满足:的数据满足:1n45。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【问题分析问题分析】用用 f(i)表示宽度为表示宽度为 i 的橱窗的橱窗(或或 i
23、 条彩带条彩带)的合法放置方案的合法放置方案数,则数,则 f(1)=2,f(2)=2,f(3)=4,f(4)=6,f(5)=10,不不难发现,答案就是初始值不一样的斐波那契数列,所以,用难发现,答案就是初始值不一样的斐波那契数列,所以,用递推法就可以很方便地求出递推法就可以很方便地求出 f(n)。参考程序见教材参考程序见教材352页。页。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)例例3、城市路径城市路径【问题描述问题描述】地图上有地图上有 n 个城市,一只奶牛要从个城市,一只奶牛要从 1 号城市开始依次经号城市开始依次经过这些城市,最终到达过这些城市,最终到达 n 号
24、城市。但是这只奶牛觉得这样太号城市。但是这只奶牛觉得这样太无聊了,所以它决定跳过其中的一个城市无聊了,所以它决定跳过其中的一个城市(但是不能跳过但是不能跳过 1 号号和和 n 号城市号城市),使得它从,使得它从 1 号城市开始,到达号城市开始,到达 n 号城市所经过号城市所经过的总距离最小。假设每一个城市的总距离最小。假设每一个城市 i 都有一个坐标都有一个坐标(x i,y i),从从(x 1,y 1)的城市的城市 1 到到(x 2,y 2)的城市的城市 2 之间的距离为之间的距离为|x 1-x 2|+|y 1-y 2|。【输入格式输入格式】第第 1 行行 1 个正整数个正整数 n,表示城市个
25、数。,表示城市个数。接下来的接下来的 n 行,每行行,每行 2 个数个数 x i 和和 y i,表示城市,表示城市 i 的坐标。的坐标。高等教育出版社高等教育出版社信息学奥赛课课通信息学奥赛课课通(C+)【输出格式输出格式】一行一个数,使得它从一行一个数,使得它从1号城市开始,跳过某一个城市,到达号城市开始,跳过某一个城市,到达n号城市所经过的最小总距离。号城市所经过的最小总距离。【输入样例输入样例】40 08 311-110 0【输出样例输出样例】14【样例说明样例说明】跳过跳过 2 号城市。号城市。【数据规模数据规模】对于对于 40%的数据满足:的数据满足:n1000。对于对于 100%的
展开阅读全文