[原创]2015 年蓝桥杯省赛 B 组 C/C++(试题 + 答案)前几题
2016-03-01 20:57:20 Tabris_ 阅读数:3614
博客爬取于 2020-06-14 22:45:05
以下为正文
版权声明:本文为 Tabris 原创文章,未经博主允许不得私自转载。
https://blog.csdn.net/qq_33184171/article/details/50775612
一、奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是 5 位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。
简单数学问题
排列组合一下
89999=52488
暴力搜索
1 | # include <stdio.h> |
二、
星系炸弹
在 X 星系的广袤空间中漂浮着许多 X 星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹 2015 年 1 月 1 日放置,定时为 15 天,则它在 2015 年 1 月 16 日爆炸。
有一个贝塔炸弹,2014 年 11 月 9 日放置,定时为 1000 天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即 4 位年份 2 位月份 2 位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
本题最好还是用 Excel
一来题目不难就是麻烦点
二来比赛时间有限啊
答案是 2017-08-05
要注意格式
三、三羊献瑞
观察下面的加法算式:

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的 4 位数字(答案唯一),不要填写任何多余内容。
这就是个数学题
先按数学题的方法解一下
语言表述的话很长 但思考的时候是很快的 如果没兴趣可以跳过
1,因为是加法算式三是进位出来的 所以是三是 1
2,因为三是 1 且三加祥能进位,只有 1+9 能进位,所以祥是 9
**但是考虑可能有进位的情况祥可能为 8 或 9 ***
⑴,当祥为 8 时 8+1+1(进位的 1)=10 这时羊只能为 0 而 0+ 任何 1~9 数均 <10 不可能进位 ——不成立
⑵,当祥为 9 时 9+1+1(进位的 1)=1,羊为 1 因为三为 1 所以羊不为 1 ——不成立
综上得到三为 1 祥为 9 所以羊为 0
3,瑞 +0= 生只能是后面进位了,得到瑞 +1 等于生。
又有生 + 献 = 瑞 即 瑞 +1+ 献 = 瑞 即 1+ 献 =0
(到这可能有些不明白,解释下,这又是因为后位进 1 导致 1+ 献 =0 应为 1+ 献 +1(进位的 1)=0 即献 =8)
此时设瑞 =x,辉 =y,气 =z。
这时所有的数的关系如下
这时从 x 开始试数,1,0 已经有了 从 2 开始试数
x=2 时 x+y>=10,y>=8 而 8,9 已经存在—— 不成立
x=3 时 x+y>=10,y>=7 8,9 已经存在 也只能为 7,但 x+y=3+7+10 z 应为 0 因 0 已经存在—— 不成立
x=4 时 x+y>=10,y>=6 8,9 已经存在 y 可为 6,7 当为 6 时 z=0—— 不成立 当为 7 时 z=1 不成立
x=5 时 x+y>=10,y>=5 8,9 已经存在 y 为 7 时 z 为 2 此时总式成立
所以得出结果为 9567+1085=10652
得出三样献瑞 为 1085
***此题目用推理的方式做出来 上述只是他的证明过程 所以文字多 篇幅长 但是这都是思考出来的 在实际操作中很快就会得出结果 比写暴力的代码要省时的多 毕竟代码那么多的 for 语句 还有那么多数字加在一起 很容易出错了 虽然不用代码 有点违背蓝桥杯是 C++ 比赛的事实 但是做出题来得分 取得名次 才是王道 ***
下面是常规暴力做法
1 | # include <iostream> |
这么繁杂的代码 写起来也很影响心情啊
---------------------------------Update-----------------------------
其实 C++
它能够将序列的全排列全部计算出来,这样的话,这道题目的代码量就会减少太多了。
以下代码已经确认 '三'=1 ,'祥'=9
1 | bool check(int *a){ |
第 6 题:加号改乘号
题目大意
把 1+2+3+…+48+49 中的两个加号改成乘号(修改位置不能相邻),使得式子的结果由 1225 变为 2015。
解题分析:
用双循环暴力两个乘号的位置,计算在数字 i、j 后的加号改为乘号,式子数值的变化即可,注意 j 的起始位置为 i+2。
简化一下能得到是判断式为 792=i*(i-1)+j*(j-1)
代码:
1 | # include <iostream> |
7 题:牌型种数
题目大意
原题:
小明被劫持到 X 赌城,被迫与其他 3 人玩牌。
一副扑克牌(去掉大小王牌,共 52 张),均匀发给 4 个人,每个人 13 张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
解题分析:
这里也是两种方法, 暴力搜索。
题目很容易 记住剪枝 能快不少
1 | # include <iostream> |
就这么多吧


