ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:31.12KB ,
资源ID:5698208      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5698208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蓝桥杯初赛b组试题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

蓝桥杯初赛b组试题.docx

1、蓝桥杯初赛b组试题第一题结果填空 3奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10-99),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。请提交该数字(一个整数),不要写任何多余的内容或说明性文字。-题解:考试的时候写了个回溯法,然后屁颠屁颠的开始做下面一题了。结果错了_ 1 #include 2usingnamespacestd; 3boolfuck(int t) 4 5while(t) 6 7if(t%10=4)retu

2、rnfalse; 8 t/=10; 9 10returntrue;11 12intmain()13 14intans = 0, t = 10;15while(t100)16if(fuck(t+)ans+;17coutansendl;18return0;19 第一题正确答案:52488(我居然上来第一题就错了居然写了13440_)/cout8*9*9*9*9; _第二题结果填空 5星系炸弹在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,20

3、14年11月9日放置,定时为1天,请你计算它爆炸的准确日期。请填写该日期,格式为yyyy-mm-dd即4位年份2位月份2位日期。比如:2015-02-19请严格按照格式书写。不能出现其它文字或符号。-题解:不用废话,直接手算顶多3分钟,注意2016是闰年正确答案:2017-08-05第三题结果填空 9三羊献瑞观察下面的加法算式: 祥瑞生辉+ 三羊献瑞-三羊生瑞气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。-题解:水题,给“祥瑞生辉三羊献气”编号01234567,直接

4、回溯穷举即可 1 #include 2usingnamespacestd; 3inta8; 4boolb10; 5voiddfs(int cur) 6 7if(cur = 8) 8 9int x = a0*1+a1*100+a2*10+a3,y = a4*1+a5*100+a6*10+a1, z=a4*10+a5*1+a2*100+a1*10+a7;10if(x+y=z)couta4a5a6a1endl;11 12else13 14for(inti = 0; i10; i+)15 16if(cur = 0&i = 0)continue;17if(cur = 4&i = 0)continue;1

5、8if(!bi)19 20 bi=1;21acur=i;22dfs(cur+1);23 bi=0;24 25 26 27 28intmain()29 30dfs(0);31return0;32 第三题正确答案:1085第四题代码填空11格子中输出StringInGrid函数会在一个指定大小的格子中打印指定的字符串。要求字符串在水平、垂直两个方向上都居中。如果字符串太长,就截断。如果不能恰好居中,可以稍稍偏左或者偏上一点。下面的程序实现这个逻辑,请填写划线部分缺少的代码。 1 #include 2 #include 3 4voidStringInGrid(int width, int heigh

6、t, constchar* s) 5 6inti, k; 7charbuf1; 8strcpy(buf, s); 9if (strlen(s)width - 2) bufwidth - 2 = 0;1011printf(+);12for (i = 0; iwidth - 2; i+) printf(-);13printf(+n);1415for (k = 1; k(height - 1) / 2; k+)16 17printf();18for (i = 0; iwidth - 2; i+) printf();19printf(n);20 2122printf();2324printf(%*s%

7、s%*s, _); /填空2526printf(n);2728for (k = (height - 1) / 2 + 1; kheight - 1; k+)29 30printf();31for (i = 0; iwidth - 2; i+) printf();32printf(n);33 3435printf(+);36for (i = 0; iwidth - 2; i+) printf(-);37printf(+n);38 3940intmain()41 42StringInGrid(20, 6, abcd1234);43return0;44 对于题目中数据,应该输出:+ abcd1234

8、 +(如果出现对齐问题,参看【图1.jpg】)注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。-题解:我是一名OI党,入门直接学的是C+,结果考了个printf里面%*s的用法。太特么冷门了,穷举了没试出来,原来后面的参数要跟两个。分数11分怒丢正确答案:(width-strlen(s)-2)/2,s,(width-strlen(s)-1)/2,备注:答案可以形式多样性,只要代入使得代码成立即可,但要注意奇偶问题所以后面一个要+1不然sample过了也是错的第五题代码填空13九数组分数1,2,3.9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填

9、写划线部分缺失的代码。 1 #include 2 3voidtest(int x) 4 5int a = x0 * 1 + x1 * 100 + x2 * 10 + x3; 6int b = x4 * 10 + x5 * 1 + x6 * 100 + x7 * 10 + x8; 7 8if (a * 3 = b) printf(%d / %dn, a, b);9 1011voidf(int x, int k)12 13inti, t;14if (k = 9)15 16 test(x);17return;18 1920for (i = k; i9; i+)21 22 t = xk; xk = x

10、i; xi = t; 23 f(x, k + 1);24 _ / 填空处25 26 2728intmain()29 30intx = 1, 2, 3, 4, 5, 6, 7, 8, 9 ;31 f(x, 0);32return0;33 注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。-题解:水题,回溯法的最最基本常识,全局变量回溯完成后必须更改回初值正确答案:t=xk; xk=xi; xi=t;备注:1.答案可以形式多样性,只要代入使得代码成立即可2.我个人认为一个横线可以填多个语句,所以去掉大括号,或者利用原有t值少写一句子no problem第六题结果填空17加法变乘法我们都

11、知道:1+2+3+ . + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+.+10*11+12+.+27*28+29+.+49 = 2015就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。注意:需要你提交的是一个整数,不要填写任何多余的内容。-题解:水题,一共是48个位置,C(48,2)扣掉连在一起的情况,穷举一遍过即可。 1 #include 2usingnamespacestd; 3intmain() 4 5for(inti = 1; i47; i+) 6for(int j =

12、 i + 2; j 49; j+) 7 8int sum = 0; 9for(int k = 1; k i; k+)sum+=k;10 sum+=i*(i+1);11for(int k = i+2; k j; k+)sum+=k;12 sum+=j*(j+1);13for(int k = j+2; k 50; k+)sum+=k;14if(sum=2015)coutiendl;15 16return0;17 第六题正确答案:16第七题结果填空21牌型种数小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:

13、如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。-题解:水题,一共是记号为A,2,3,4,5,6,7,8,9,10,J,Q,k的十三个元素,每个元素的情况可能是0,1,2,3,4。这十三个元素的和为13即可。回溯穷举再剪枝即可。 1 #include 2usingnamespacestd; 3intans = 0, sum = 0; 4voiddfs(int cur) 5 6if (sum13)return; 7if (cur = 13) 8 9if (sum = 13)ans+;10ret

14、urn;11 12else13 14for (inti = 0; i5; i+)15 16 sum += i;17dfs(cur + 1);18 sum -= i;19 20 21 22intmain()23 24dfs(0);25coutansendl;26return0;27 第七题正确答案:3598180第八题程序设计 15移动距离X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3.当排满一行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 15 .我们的问题是:已知了两个楼

15、号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开,都在1到10范围内w为排号宽度,m,n为待计算的楼号。要求输出一个整数,表示m n 两楼间最短移动距离。例如:用户输入:6 8 2则,程序应该输出:4再例如:用户输入:4 7 20则,程序应该输出:5资源约定:峰值内存消耗 256MCPU消耗 1ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意

16、: 所有依赖的函数必须明确地在源文件中 #include ,不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。-题解:从分值上都能看出来是水题。比前面两个填空题的分值都低。最简单的做法,小学生都会的,用数论的完全剩余系,我们强行更改矩阵的编号比如题目中的强行更改为:0 1 2 3 4 5 11 10 9 8 7 612 13 14.这样就算起来非常方便了,要求的答案就是坐标之差#include #include usingnamespacestd;int main()intw,m,n;cinwmn;m-;n-;int m1=m/w, m2=m%w;if(m1&1)m2=w-

17、1-m2;int n1=n/w, n2=n%w;if(n1&1)n2=w-1-n2;coutabs(m1-n1)+abs(m2-n2)endl;return0;第八题第九题程序设计 25垒骰子赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。经过长期观察,atm发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。atm想计算一下有多少种不同的可能的垒骰子方式。两种垒骰子方式相同,当且仅当这两种方式中对应

18、高度的骰子的对应数字的朝向都相同。由于方案数可能过多,请输出模 109 + 7 的结果。不要小看了atm的骰子数量哦输入格式第一行两个整数 n mn表示骰子数目接下来 m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。输出格式一行一个数,表示答案模 109 + 7 的结果。样例输入2 11 2样例输出544数据范围对于 30% 的数据:n = 5对于 60% 的数据:n = 100对于 100% 的数据:0 n = 109, m = 36资源约定:峰值内存消耗 256MCPU消耗 2ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入.” 的多余内容。所有代码放在同一个

19、源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C+ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include ,不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。-题解:终于不是水题了,然而却没全做出来。难度跳跃太大。考场上,我先用dfs做,结果数字大于5的时间就hold不住了,于是果断改成记忆化动态规划,但是只能到一万,实在没办法了。大神跟我说用矩阵快速幂做,所以现在立马现学现用。程序有空补。【考场程序】讲解:利用记忆化DP穷举底面衔接的所有情况,dppq表示

20、第p层底面是q的情况种数,侧面是相互独立的最后乘以4n即可比如提给数据就是34再乘上两个4。但是上限1实在是达不到了。 1 #include 2 #include 3#define N 1007 4usingnamespacestd; 5/考场上我用的map现在想想发现多余了 6into7 = 0, 4, 5, 6, 1, 2, 3 ; 7boolfuck77; 8int n, m; 9longlongans = 0;10constintmaxn = 25;11longlongdpmaxn7;12longlongdfs(int cur, int p)13 14if (cur = n) retu

21、rn1;15else16 17if (dpcurp = 0)returndpcurp;18longlong t = 0;19for (inti = 1; i n m;32for (inti = 0; i t1 t2;36fuckt1t2 = 1;37fuckt2t1 = 1;38 39for (inti = 1; i7; i+)40 41ans+=dfs(1, i);42ans %= N;43 44for (inti = 0; i n; i+)45 46ans *= 4;47ans %= N;48 49coutansendl;50return0;51 考场程序,数据不够大所以要扣分,最大只能到

22、10【AC版本】:矩阵快速幂同理我们只考虑底面的情况,最后乘上4n即可。我们设六阶矩阵An,其中An的第a行第b列表示第一层底面数字为a、第n层数字为b的所有排列的情况记六阶矩阵X中,第a行第b列表示相邻两层的是否能成功连接的情况。a和b能连则为1,a和b不能连则为0(注意是相邻两层的底面,不是衔接面,所以要转化,比如题给的1 2要改为1 5)根据上述定义,易得递推式:An= An-1X,且 A1= E(六阶单位矩阵)可得到An的表达式为An= Xn-1那么ans就是矩阵Xn-1的36个元素之和注意最后侧面的4n也要二分幂不然会爆炸 1 #include 2 #include 3#define

23、 N 1007 4usingnamespacestd; 5 6struct Matrix 7 8longlonga66; 9Matrix(int x)10 11memset(a, 0, sizeof(a);12for (inti = 0; i6; i+) aii = x;13 14 ;1516 Matrix operator*(const Matrix& p, const Matrix& q) 17 18 Matrix ret(0);19for (inti = 0; i6; i+)20for (int j = 0; j 6; j+)21for (int k = 0; k = 1;37 38re

24、turn ret;39 4041intmain()42 43 Matrix z(0);44for (inti = 0; i6; i+) 45for (int j = 0; j n m; 51for (inti = 0; i t1 t2;55z.at1 - 1(t2 + 2) % 6 = 0;56z.at2 - 1(t1 + 2) % 6 = 0;57 58 Matrix ret(0);59 ret = fast_mod(z, n - 1);60longlongans = 0;61for (inti = 0; i6; i+)62 63for (int j = 0; j = 1;80 81coutansendl;82return0;83 矩阵快速幂第十题程序设计 31生命之树在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 a, v1, v2, ., vk, b 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1