当前位置:文档之家› 2018蓝桥杯试题

2018蓝桥杯试题

2018蓝桥杯C语言b组国赛真题1.标题:换零钞x星球的钞票的面额只有:100元,5元,2元,1元,共4种。

小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。

小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。

银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5元,2元,1元面额的必须都有,不能是0)注意,需要提交的是一个整数,不要填写任何多余的内容。

手算都可以。

下面是代码,答案741.#include<iostream>ingnamespacestd;3.intmain(){4.for(inti=1;i<40;i++){5.for(intj=1;j<200;j++){6.if(5*i+2*10*j+1*j==200)7.cout<<"5*"<<i<<"+2*"<<10*j<<"+1*"<<j<<"="<<5*i+2*10*j+1*j<<"(一共"<<i+10*j+j<<"张)"<<endl;8.}9.}10.return0;11.}12.2.标题:激光样式x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。

安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?显然,如果只有3台机器,一共可以成5种样式,即:全都关上(sorry,此时无声胜有声,这也算一种)开一台,共3种开两台,只1种30台就不好算了,国王只好请你帮忙了。

要求提交一个整数,表示30台激光器能形成的样式种数。

注意,只提交一个整数,不要填写任何多余的内容。

思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。

答案21783091.#include<iostream>2.#include<string.h>ingnamespacestd;4.intans=0;5.intx[31];//0代表关,1代表开6.7.voiddfs(intindex){8.if(index==30){9.ans++;10.return;11.}12.if(index==0||x[index-1]==0){//第一个灯光可以取0或1,当前灯光左边要是没开,那当前灯光可以取0和113.for(inti=0;i<=1;i++){14.x[index]=i;15.dfs(index+1);16.x[index]=0;17.}18.}19.else{//左边的灯光开了,那当前灯光只能关闭(取0)20.dfs(index+1);21.}22.}23.24.intmain(){25.memset(x,0,31*sizeof(int));26.dfs(0);27.cout<<ans<<endl;28.return0;29.}3.标题:格雷码格雷码是以n位的二进制来表示数。

与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同。

首尾两个数字也要求只有1位之差。

有很多算法来生成格雷码。

以下是较常见的一种:从编码全0开始生成。

当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0)当产生第偶数个数时,先找到最右边的一个1,把它左边的数字改变。

用这个规则产生的4位格雷码序列如下:0000000100110010011001110101010011001101111111101010101110011000以下是实现代码,仔细分析其中逻辑,并填写划线部分缺少的代码。

(答案:a^((a&(-a))<<1))1.#include<stdio.h>2.voidshow(inta,intn){3.inti;4.intmsk=1;5.for(i=0;i<n-1;i++)msk=msk<<1;6.for(i=0;i<n;i++){7.printf((a&msk)?"1":"0");8.msk=msk>>1;9.}10.printf("\n");11.}12.voidf(intn){13.inti;14.intnum=1;15.for(i=0;i<n;i++)num=num<<1;16.inta=0;17.for(i=0;i<num;i++){18.show(a,n); 19.if(i%2==0){ 20.a=a^1; 21.} 22.else{23.a=_________________________;//填空 24.} 25.} 26.}27.intmain(){ 28.f(4); 29.return0; 30.}请注意:只需要填写划线部分缺少的内容,不要抄写已有的代 4.标题:调手表 小明买了块高端大气上档次的电子手表,备调。

在M 78星云,时间的计量单位和地球,M78星云的一个小时有n 分钟。

大家都知道,手表只有一个按钮可以把当前的数加一。

在调分钟的时候,如果当 前显示的数是0,那么按一下按钮就1,再按一2。

如果当前的 数是n -1,按一次后0。

作为强迫,小明一定要把手表的时。

如果手表上的时间比当前时间 多1,则要按n -1次加一按钮才能调时间。

小明想,如果手表可以再添加一个按钮,表示把当前的数加k 该多好啊⋯⋯ 他想知道,如果有了这个+k 按钮,按照最优策略按键,从任意一个分钟数调到 另外任意一个分钟数最多要按多少次。

注意,按+k 按钮时,如果加k 后数n -1比如,n=10,k=6的时候,假设当前时间是0,连按2次+k 按钮,则调为2。

「输入格式」一行两个整数n,k,意义如题。

「输出格式」一行一个整数表示:按照最优策略按键,从一个时间调到另一个时间最多要按多少次。

「样例输入」53「样例输出」2「样例解释」如果时间正确则按0次。

否则要按的次数和操作系列之间的关系如下:1:+12:+1,+13:+34:+3,+1「数据范围」对于30%的数据0<k<n<=5对于60%的数据0<k<n<=100对于100%的数据0<k<n<=100000资源约定:峰值内存消耗(含虚拟机)<256MCPU 消耗<1000ms请严格按要求输出,不要画蛇添足地打印类似:...”的多余内容。

注意: main 函数需要返回0; 只使用A N S I C /A N S I C +; 不要调用依赖于编译环境或操作系殊函数。

所有依赖的函数必须明确地在中#include<xxx> 不能通过工程设置而省略常用。

提交程序时,注意选择所期望的语和。

5.标题:搭积木 小明对搭积木非常感兴趣。

他的积木都是同样大小。

在搭积时,小m 块积木作为地基,将他们在桌子上一,中间不 留空隙并称0层。

随后,小明可以在上面12层,⋯⋯,最多摆n 层。

摆放积 木必须遵循 1:每块积木必须紧挨着放置在某一块积木的正上其下一层的积木对 齐; 2:同一层中的积木必须连续摆放,中间不能留有空隙; 3:小明不喜欢的位置不能放置积木。

其中,小明不喜欢的位置都被标在了图纸上。

有n 行,从下至上的每一行分别对应积1n 层。

每一行都有m 个字符,字符可能是‘.’或 ‘X ’,其中‘X ’表示这个位置是小明不喜欢的。

现在,小明想要知道,共有多少种放置积木的方案。

他找到了参加蓝桥杯的你来帮他计算这个答案。

由于这个答案可能很大,你只需要回答这个答案对1000000007(十亿零七)取模后的结果。

注意:地基上什么都不放,也算作是方案之一种。

【输入格式】输入数据的第一行有两个正整数n和m,表示图纸的大小。

随后n行,每行有m个字符,用来描述图纸。

每个字符只可能是‘.’或‘X’。

【输出格式】输出一个整数,表示答案对1000000007取模后的结果。

【样例输入1】23..X.X.【样例输出1】4【样例说明1】成功的摆放有(其中O表示放置积木):(1)..X.X.(2)..XOX.(3)O.XOX.(4)..X.XO【样例输入2】33..X.X....【样例输出2】16【数据规模约定】对于10%的数据,n=1,m<=30;对于40%的数据,n<=10,m<=30;对于100%的数据,n<=100,m<=100。

资源约定:峰值内存消耗(含虚拟机)<256M CPU消耗<1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

注意:main函数需要返回0;只使用ANSIC/ANSIC++标准;不要调用依赖于编译环境或操作系统的特殊函数。

所有依赖的函数必须明确地在源文件中#include<xxx>不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

6.标题:矩阵求和经过重重笔试面试的考验,小明成功进入Macrohard公司工作。

今天小明的任务是填满这么一张表:表有n行n列,行和列的编号都从1算起。

其中第i行第j个元素的值是gcd(i,j)的平方,gcd表示最大公约数,以下是这个表的前四行的前四列:11111414119114116小明突然冒出一个奇怪的想法,他想知道这张表中所有元素的和。

由于表过于庞大,他希望借助计算机的力量。

「输入格式」一行一个正整数n意义见题。

「输出格式」一行一个数,表示所有元素的和。

由于答案比较大,请输出模(10^9+7)(即:十亿零七)后的结果。

「样例输入」4「样例输出」48「数据范围」对于30%的数据,n<=1000存在10%的数据,n=10^5对于60%的数据,n<=10^6对于100%的数据,n<=10^7资源约定:峰值内存消耗(含虚拟机)<256MCPU消耗<2000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

注意:main函数需要返回0;只使用ANSIC/ANSIC++标准;不要调用依赖于编译环境或操作系统的特殊函数。

所有依赖的函数必须明确地在源文件中#include<xxx>不能通过工程设置而省略常用头文件。

相关主题