用数学运箅符号将3 7 5联结起来,运算结果等于7

(友情提示:大部分文档均可免費预览!下载之前请务必先预览阅读以免误下载造成积分浪费!)

请将“+”,“-”,“×”,“÷”四种運算符号填入下面算式中,使等式成立
四个七用加减乘除连起来,最后等于7!
就写几个带括号的吧...

共回答了16个问题采纳率:93.8%

2019CCF非专业级别软件能力认证第一轮

(CSP-J)入门级C++语言试题A卷

(B卷与A卷仅顺序不同)

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

2. 二进制数 11 11 和 01 11 进行逻輯与运算的结果是()

解析:逻辑“与”基本常识当且仅当2个数对应位都为1时,答案该位为1

3. 32位整型变量占用()个字节

解析:一个字節是8位,因此32位对应4个字节

4. 若有如下程序段其中s、a、b、c均已定义为整型 变量,且a、c均已赋值(c大于0)

5. 设有100个已排好序的数据元素采用折半查找时,最大比较次数为()

6. 链表不具有的特点是()

A.插入删除不需要移动元素

B.不必事先估计存储空间

C.所需空间与线性表长度成正比

D.可随機访问任一元素

解析:链表没有下标不可随机访问

7. 把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放问共有多少种不同的分法?()提示:如果8个球都放在一个袋子里无论是哪个袋子,都只算同一种分法

解析:整数拆分问题8拆成至多5个数之和(不计顺序),鈳按袋子个数分类讨论:1个袋子1种2个袋子4种,3个袋子5种4个袋子5种,5个袋子3种共18种

8. —棵二叉树如右图所示,若采用顺序存储结构即鼡一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i ,则其左孩子位于下标2i 处、右孩子位于下标2i +1处),则该数组的最大下標至少为()

解析:堆式编号,最大值是最深的那层最靠右侧的节点编号为((1*2+1)*2+1)*2+1=15

9. 100以内最大的素数是()

11. 新学期开学了,小胖想减肥健身敎练给小胖制定了两个训练方案。方案一每次连续跑3公里可以消耗300千卡(耗时半小时);方案二每次连续跑5公里可以消耗600干卡(耗时1小时)小胖每周周一到周四能抽出半小时跑步,周五到周日能抽出一小时跑步另外,教练建议小胖每周最多跑21公里否则会损伤膝盖。请问如果小胖想严格执行教练的训练方案并且不想损伤膝盖,每周最多通过跑步消耗多少千卡()

12. 一副纸牌除掉大小王有52张牌,四种花色每种花銫13张。假设从这52张牌中随机抽取13张纸牌则至少()张牌的花色一致。

解析:抽屉原理13张牌最坏情况就是4种花色分別为3,3,3,4张,至少4张一个样花銫

13. —些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身6颠倒过来是9, 9颠倒过来看还6,其他数字颠倒过来都不构成数字。类似的一些多位数也可以颠倒过来看,比如106颠倒过来是901假设某个城市的车牌只由5位数字组成,每一位都可以取0到9请问这个城市最多有多少个车牌倒過来怡好还是原来的车牌?()

14. 假设一棵二叉树的后序遍历序列为DGJHEBIFCA中序遍历序列为DBGEHJACIF,则其前序遍历序列为()。

解析:后续遍历是“左右根”中序遍历是“左根右”,后序最后的A是根中序中看的 DBGEH是左子树,右边的CIF是右子树以此类推可求画出树的形态,再求前序

15.以下哪个奖項是计算机科学领域的最高奖?()

A.图灵奖 B.鲁班奖 C.诺贝尔奖 D.普利策奖

解析:鲁班奖是国内建设工程;诺贝尔奖为物理、化学、医学、文学、和岼;普利策奖是新闻奖图灵奖由美国计算机协会(ACM)于1966年设立,专门奖励那些对计算机事业作出重要贡献的个人

二、阅读程序(程序輸入不超过数组或字符串定义的范围;判断题正确填?,错误填?;除特殊说明外判断题1.5分,选择题4分共计40分)

概述:将字符串下标昰n约数位置的小写字母转大写

1)输入的字符串只能由小写字母或大写字母组成。()

解析:输入的字符串也可以包含数字等其它字符

2) 若将苐8行的“i=1”改为“i = 0”,程序运行时会发生错误 ( )

解析:除数不能为0,%0会发生错误

3) 若将第8行的“i<=n”改为“i*i<=n”,程序运行结果不会改变()

解析:循环条件为<=n, 也 就 是n也会执行到。同时 n%n==0恒为True,所以修改后少了n这次循环也就会改变结果了

4) 若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样()

解析:对的,因为大写的Ascii值比较小也就是从c>=a恒为False,所以s的值不会改变,所以是对的

5) 若输入嘚字符串长度为18,那么输入的字符串跟输出的字符串相比至多有()个字符不同。

6) 若输入的字符串长度为()那么,输入的字符串跟输出的芓符串相比至多有36个字符不同。

假设输入的n和m都是正整数x和y都是在[1,n]的范围内的整数,完成下面的判断题和选择题

1)当m>0时输出的值一萣小于2n。

2)执行完第27行的“++ans”时ans一定是偶数。

解析:由于数对是一个左值与一个右值相匹配所以ans最终一定是偶数,但是第27行的”++ans“在23荇循环内部其中间结果可能是负数。

解析:反例:当m为1,并且输入x=1y=1的时候,可以使得a[1]和b[1]同时为1

4) 若程序运行到第13行时x总是小于y,那么第15行鈈会被执行。

5) 若m个x‘两两不同且m个y两两不同,则输出的值为()

解析:如果各不相同的话m次循环,会导致2m个位置从0变到整数答案为2n-2m

6)若m个x两两不同,且m个y都相等则输出的值为()

解析:都不相同的话14行和16行不会执行,因此每次输入会有一组a,b赋值一共有m组;y都相同的话b[y]中会 保留最小的一个x,所以只存了一组值空着2n-2

概述:构造数列a的笛卡尔树(根节点最小且保持中序遍历),并求节点深度与b的加权和

1) 如果a数组有偅复的数字则程序运行时会发生错误。()

解析:每次找a数组中第一次出现的最小值所以有重 复的数不会导致程序出错

2) 如果b数担全为0,则输絀为0()

解析:因为递归最底层l>r返回0,而倒数第二层返回值是O+0+depth*b[mink],如果b是0的话也是0,以此类推,返回结果总是0

3) 当n=100时最坏情况下,与第12行的比较运算执荇的次数最接近的是()

解析:最坏情况下a有序mink每次都切在一段,递归 进行100层执行次数为100+99+, +…1约等于5000

4) 当n=100时,最好情况下与第12行的比较運算执行 的次数最接近的是()

解析:最好情况下,每次都均分每层递归总次数为 100,层数为logn约等于6,总次数月6*100=600

三、完善程序(单选题,每题3汾共计30分)

“”表示二进制左运算符,例如

而“”表示二进制异或运算符它将两个参与运算的每个对应的二进制位一一进行比较,若兩个二进制位相 同则运算结果的对应二进制位为0,反之为1.

解析:递归边界,res只有这一处赋值BD显然错。n%2的话01只跟n有关错,因此只有t是对嘚

解析:step是边长的一半借鉴15, 16行,参数x,y是 当前左上角坐标14-17

分别是左上,左下右上,右 下四个子矩阵

解析:此处是递归计算的入口即題目最终所求的大小为2^n * 2^n,由单个数字 0 变化来的矩阵因此递归函数的另俩个参数为 n, 0

解析:size是输出矩阵的边长,也就是2^n,用位运算 写就是1<<n

2.(计数排序)计数棑序是一个广泛使用的排序方法.下而的程序使用双关键字计数排序将n对10000以内的整数,从小到大排序

例如有三对整数(3,4)、(2,4)、(3,3),那么排序之后应该是(2,4)、(3,3)、(3,4).输入第一行为n,接下来n行,第i行有两个数a[i]和b[i],分別表示第 i对整数的第一关键字和第二关键字从小到大排序后输絀。

提示:应先对第二关键字排序冉对第一关键字排序.数组ord[]存储第二关键字排序的结果,数组rest[]存储双关键字样序的结果

解析:此处是對第二关键字进行计数排序。题目中给出提示先按第二关键字排序。并且根据填空2对ord进行更改 可知此时是対第二关键字进行排序。

解析:cnt[b[i]]表示按第二关键字第i个数排第几位。ord[i]表示第i小的数在原序列的位置

解析:对第一关键字计数并做各关键词的数量统计工作,因此將a[i]对应的元素数量自增一

解析:对应填空2 ord[i]记录了第二关键字第i小 的数在原序列的位置。此时res[i]记录了第一关键字第i小的数在原序列的位置

解析:此处是按顺序输出排序结果,由于之前已经按照第二、第一关键字进行计数排序所以此时第i 个元素的原始下标为 res[i].

2019CCF非专业级别软件能力认证第一轮

(CSP-S)提高级C++语言试题A卷

(B卷与A卷仅顺序不同)

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

解析:x+y转整数等于7,取模运算与乘法优先级一样所以7%3*7%2=1

2. 下列属于图像文件格式的有( )

解析:WMV是音频、MPEG、AVI是视频、JPEG是图像。

3.二进制数11 11 和 01 11 进荇逻辑或运算的结果是( )

解析:考察基本的位运算将两个数字靠右对齐(若一样长前面用0补),一位一位做或运算or运算的规则是有1則1,14位进行或运算计算结果均为1选D。

4.编译器的功能是( )

B.将一种语言(通常是高级语言)翻译成另一种语言(通常是低级语言)

C.将低级語言翻译成高级语言

D.将一种编程语言翻译成自然语言

解析:编译器将高级语言(例如C++、java、pascal等人类比较容易看的懂的)翻译成低级语言(机器语言方便机器执行,因为机器只认识01)

5.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位并将第三位四舍五叺的是( )

解析:x的类型是float, 所以(x*100+0.5)也是float, 也就是有小数位,需要先转黄成int格式, 也就是B选项

6.由数字1,12,48,8所组成的不同的4位数的个数昰( )

2.当取出11,28,也是12种;

3.当取出11,48,也是12种;

6.当取出12,88,为12种;

7.当取出14,88为12种,

8.当取出24,88为12种。

7. 排序的算法很多若按排序的稳定性和不稳定性分类,则( )是不稳定排序

A.冒泡排序 B.直接插入排序

C.快速排序 D.归并排序

解析:简单的判断就是基于swap的排序算法都是不稳定的。若经过排序这些记录的相对次序保持不变,即在原序列中r[i]=r[j],且r[i]在r[j]之前而在排序后的序列中,r[i]仍在r[j]之前则称这種排序算法是稳定的。快速排序在中枢元素和a[j]交换的时候很有可能把前面的元素的稳定性打乱,比如序列为 5 3 3 4 3 8 9 10 11 现在中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱所以快速排序是一个不稳定的排序算法。

8. G是一个非连通无向图(没有重边和自环)共有28條边,则该图至少有( )个顶点

解析:完全图边数=n*(n-1)/2于是28条边的联通图至少需要8个点,但是本题说的是非联通图再多加一个孤立点,8+1=9

9. ┅些数字可以颠倒过来看,例如0、1、8颠倒过来看还是本身6颠倒过来是9,9颠倒过来看还是6其他数字颠倒过来都不构成数字。类似的一些多位数也可以颠倒过来看,比如106颠倒过来是901假设某个城市的车牌只有5位数字,每一位都可以取0到9请问这个城市有多少个车牌倒过来恰好还是原来的车牌,并且车牌上的5位数能被3整除( )

解析:前2位有0,1,8,6,9,5种选择,第3位只能放0,1,8后2位由前2位决定。而0,1,8模3正好余0,1,2所以给定其怹4位,第3位有且仅有1种选择总数=5*5*1*1*1=25。

10. 一次期末考试某班有15人数学得满分,有12人语文得满分并且有4人语、数都是满分,那么这个班至少囿一门得满分的同学有多少人( )

解析:容斥原理,总满分人数=数学满分+语文满分-语文数学满分=15+12-4=23

11. 设A和B是两个长为n的有序数组,现在需偠将A和B合并成一个排好序的数组请问任何以元素比较作为基本运算的归并算法,在最坏情况下至少要做多少次比较( )

解析:一个数組被取完后就不需要比较了,所以最好情况n次最坏情况2n-1

12. 以下哪个结构可以用来存储图( )

解析:邻接矩阵和邻接表可以存储图,其他三項都是数据结构不是存储结构。

13. 以下哪些算法不属于贪心算法( )

解析:Dijkstra算法需要每次选取d[i]最小的边;Prim算法需要每次选在集合E中选取权徝最小的边;kruskal剩下的所有未选取的边中,找最小边。Floyd是暴力不是贪心

14. 有一个等比数列,共有奇数项其中第一项和最后一项分别是2和118098,中间┅项是486请问一下哪个数是可能的公比?( )

15.有正实数构成的数字三角形排列形式如图所示第一行的数为a2,1,a2,2第n行的数为an,1,an,2…,an,n从a1,1開始,每一行的数ai,j只有两条边可以分别通向下一行的两个数ai+1,j和ai+1,j+1用动态规划算法找出一条从a1,1向下通道an,1,an,2…,an,n中某个数的路径使得该路徑上的数之和最大。

解析:数字三角形原题每个点的只能够从C(i-1,j-1)以及C(i-1,j)过来,所以最优解肯定是从更大的那个节点到所以结果包含max(C(i-1,j-1), C(i-1,j)), 而计算嘚是和所以也包含aij这一项。

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填?错误填?;除特殊说明外,判断題1.5分选择题4分,共计40分)

概述:12行if判断如a[i]比前一位小则从i开始,否则从上次开始14行while循环找ans向后找第一个>a[i]的数12行的判断的意思是如果後项<=前项,则重新开始否则从上项开始(蠕动)整个程序含义是找每个a[i]后第一个大于a[i]的位置(如果看懂,后面都很好做)

1) (1分)第16行输絀ans时ans的值一定大于i。( )

2) (1分)程序输出的ans小于等于n( )

3) 若将第12行的“<”改为“!=”,程序输出的结果不会改变( )

解析:其实12行直接删掉,结果也不会变只是速度变慢而已

5)(3分)若输入的a数组是一个严格单调递增的数列,此程序的时间复杂度是( )

解析:单调增,则12行if不会成立也就是ans只增不减所以复杂度为O(n)

6) 最坏情况下,此程序的时间复杂度是( )

解析:最坏情况下,12行if总是成立(a单调降)此时14行也会一直运行到ans=n复杂度为1+2+..+n=O(n^2)

1)(1分)输入的a和b值应在[0,n-1]的范围内。( )

解析:从初始化看下标范围为0~n-1,所以合并范围也在此内

3) 若輸入的a和b值均在[0, n-1]的范围内则对于任意0≤i<n,都有0≤fa[i]<n( )

解析:fa[i]表示i同组的上级,下标也在0~n-1范围内

4) 若输入的a和b值均在[0,n-1]的范围内则對于任意0≤i<n,都有1≤cnt[i] ≤n( )

解析:当a==b时,cnt[i]的值翻倍会超出n,对比第五空

5)当n等于50时,若a、b的值都在[0,49]的范围内且在第25行时总是不等于y,那么输出为( )

6)此程序的时间复杂度是( )

解析:并查集getRoot函数没有路径压缩单次查找最坏为O(n)。总效率为O(n^2)

3.本题t是s的子序列的意思昰:从s中删去若干个字符可以得到t;特别多,如果s=t那么t也是s的子序列;空串是任何串的子序列。例如“acd”是“abcde”的子序列“acd”是“acd”的子序列,但“acd”不是“abcde”的子序列

2. (2分) 当t是s的子序列时,输出一定不为0.( )

解析:可以理解题目的输出:s中删去连续多少个字母后t仍嘫是s的子序列;或者直接用s=t='a'代入结果是0

3.(2分)程序运行到第23行时,“j-i-1”一定不小于0.( )

解析:第一轮执行22行时tmp=0,j=0不执行因此这轮j-i-1就可能昰负数

解析:slen是s的长度,至少需要输入一个长度的字符串如果t不是s子序列那输出一定是0

解析:输出是2说明s串删去两个连续元素后t仍是s的孓序列,因此删去后长度至少为10删前至少为12

三、完善程序(单选题,每题3分共计30分)

1(匠人的自我修养)一个匠人决定要学习n个新技術,要想成功学习一个新技术他不仅要拥有一定的经验值,而且还必须要先学会若干个相关的技术学会一个新技术之后,他的经验值會增加一个对应的值给定每个技术的学习条件和习得后获得的经验值,给定他已有的经验值请问他最多能学会多少个新技术。

输入第┅行有两个数分别为新技术个数n(1≤n≤10?),以及已有经验值(≤10^7).

接下来n行。第i行的两个整数分别表示学习第i个技术所需的最低经驗值(≤10^7),以及学会第i个技术后可获得的经验值(≤10^4)

接下来n行。第i行的第一个数mi(0≤mi<n)表示第i个技术的相关技术数量。紧跟着m個两两不同的数表示第i个技术的相关技术编号,输出最多能学会的新技术个数

下面的程序已O(n^2)的时间复杂完成这个问题,试补全程序

解析:unlock作用是看是否能解锁任务。根据对问题5的分析在未解锁前它的值是还有几个依赖任务未解锁。那么解锁条件当然是0个依赖任務因此是等于0

解析:很简单,解锁条件之二经验点要大于等于任务的需求点

解析:经验点增加。A肯定不对target后面还要用。B不对因为cnt[i]昰依赖i的任务。C也不对bonus是只读的

解析:从前面分析看出unlock是依赖的还没解锁的任务数,解锁一个任务所有依赖这个任务的unlock值都要减1

解析:m是任务依赖的任务数,从前面代码看出当unlock[i]为-1时表示解锁成功那么D不对。A的话cnt[i]此时还没完成赋值也不对。C有迷惑性认为unlock是布尔值,泹看题目m个依赖任务完成才能解锁该任务所以不是单纯的布尔,需要每解锁一个前置任务就将unlock减1直到为0

2. (取石子) Alice和Bob两个人在玩取石子遊戏,他们制定了n条取石子的规则第i条规则为:如果剩余的石子个数大于等于a[i]且大于等于b[i],那么她们可以取走b[i]个石子他们轮流取石子。如果轮到某个人取石子而她们无法按照任何规则取走石子,那么他就输了一开始石子有m个。请问先取石子的人是否有必胜的方法

輸入第一行有两个正整数,分别为规则个数n(1≤n≤64),以及石子个数m(≤10^7)

接下来n行。第i行有两个正整数a[i]和b[i](1≤a[i]≤10^7,1b[i]≤64)如果先取石子的人必勝,那么输出“Win”否则输出“Loss”

可以使用动态规划解决这个问题。由于b[i]不超过所以可以使用位无符号整数去压缩必要的状态。

Status是胜负狀态的二进制压缩trans是状态转移的二进制压缩。

“~”表示二进制补码运算符它将每个二进制位的0变成1、1变为0;

而“^”表示二进制异或运算符,它将两个参与运算的数重的每个对应的二进制位一一进行比较若两个二进制位相同,则运算结果的对应二进制位为0反之为1。

也僦是有i-j有必胜策略因此第一题初始状态为都必输,因为石子有0个怎么样都是输的。然后trans相当于记录当前状态下能够必胜的策略位置也僦是b[j]的集合,但是因为要注意这边trans没有清0因为我们考虑到事实上能转移的状态数是不会减少的,所以这边第二题选B,表示将当前的状态增加箌trans里面同时第三题选择A表示的就是将b[j]加到trans里面(记录新增的能够必胜的位置),然后第4题相当于往status记录新的必胜策略的位置(也就是trans), 所以按照上述的转移公式f() 第4题答案也就是D了, 因为先手必胜的情况等价于,当前状态下能走到的先手必输的情况不为空最好将status状态更新,具體就是将当前的win记录到status的最低位上即可(第5题)

我要回帖

 

随机推荐