文章目录

  • 标题:换零钞
  • 标题:激光样式
  • 标题:格雷码
  • 标题:调手表

标题:换零钞

x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,
剩下的当然都是5元面额的。

银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?
(5元,2元,1元面额的必须都有,不能是0)

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

这道题直接笔算就可以。
答案是74

标题:激光样式

x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。
安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!
国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?

显然,如果只有3台机器,一共可以成5种样式,即:
全都关上(sorry, 此时无声胜有声,这也算一种)
开一台,共3种
开两台,只1种

30台就不好算了,国王只好请你帮忙了。

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

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

用dfs来枚举,每盏灯都有2种情况
这道题除了深搜还有好多做法,比如还可以用0、1二进制数来表示每盏灯的状态,暴力枚举。
缺点就是如果直接暴力的话运行时间就会很长了。下面的深搜就相当于经过剪枝的枚举。

#include <iostream>
using namespace std;int n, res;
int light[35];void dfs(int u)
{if (u == n){res++;return; }//关dfs(u + 1);//开if (u == 0 || light[u - 1] == 0){light[u] = 1;dfs(u + 1);light[u] = 0;}
}int main(void)
{cin >> n;dfs(0);cout << res << endl;return 0;
}

雪菜dalao的暴力枚举

递归做法

标题:格雷码

格雷码是以n位的二进制来表示数。
与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同。
首尾两个数字也要求只有1位之差。

有很多算法来生成格雷码。以下是较常见的一种:
从编码全0开始生成。
当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0)
当产生第偶数个数时,先找到最右边的一个1,把它左边的数字改变。
用这个规则产生的4位格雷码序列如下:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

以下是实现代码,仔细分析其中逻辑,并填写划线部分缺少的代码。

#include <stdio.h>
void show(int a,int n)
{int i;int msk = 1;for(i=0; i<n-1; i++) msk = msk << 1;for(i=0; i<n; i++){printf((a & msk)? "1" : "0");msk = msk >> 1;}printf("\n");
} void f(int n)
{int i;int num = 1;for(i=0; i<n; i++) num = num<<1;int a = 0;for(i=0; i<num; i++){show(a,n);if(i%2==0){a = a ^ 1;}else{a = _________________________ ; //填空}}
}int main()
{f(4);return 0;
}

请注意:只需要填写划线部分缺少的内容,不要抄写已有的代码或符号。

标题:调手表

小明买了块高端大气上档次的电子手表,他正准备调时间呢。
在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。
大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。
作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。
小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多好啊……
他想知道,如果有了这个 +k 按钮,按照最优策略按键,从任意一个分钟数调到另外任意一个分钟数最多要按多少次。
注意,按 +k 按钮时,如果加k后数字超过n-1,则会对n取模。
比如,n=10, k=6 的时候,假设当前时间是0,连按2次 +k 按钮,则调为2。

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

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

「样例输入」
5 3

「样例输出」
2

「样例解释」
如果时间正确则按0次。否则要按的次数和操作系列之间的关系如下:
1:+1
2:+1, +1
3:+3
4:+3, +1

「数据范围」
对于 30% 的数据 0 < k < n <= 5
对于 60% 的数据 0 < k < n <= 100
对于 100% 的数据 0 < k < n <= 100000

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

注意:
main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include
不能通过工程设置而省略常用头文件。

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

容易看出这是一道宽搜板子题。
题目中给出了样例的解释:我们不妨设是从0到每一个数,可以用来代表其他的情况。

#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f, N = 1e5 + 5;int n, k;
int d[N];
queue<int> que;
int num, num1, num2;int bfs()
{int res = 0;memset(d, INF, sizeof d);d[0] = 0;que.push(0);while(que.size()){int num = que.front(); que.pop();num1 = (num + 1) % n;num2 = (num + k) % n;if (d[num1] == INF){que.push(num1);d[num1] = d[num] + 1;res = max(res, d[num1]);}if (d[num2] == INF){que.push(num2);d[num2] = d[num] + 1;res = max(res, d[num2]);}}return res;
}int main(void)
{cin >> n >> k;cout << bfs() << endl;return 0;
}

2018第九届蓝桥杯大赛总决赛(软件类)试题 B组相关推荐

  1. 2018第九届蓝桥杯大赛软件类B组C/C++省赛题解

    2018第九届蓝桥杯大赛软件类B组C/C++省赛目录 试题 A:第几天(结果填空) 试题 B:明码(结果填空) 试题 C:乘积尾0(结果填空) 试题 D:测试次数(结果填空) 试题 E:快速排序(结果 ...

  2. 重庆邮电大学计算机学院蓝桥杯,第七届蓝桥杯大赛个人赛(软件类)-重庆赛区获奖名单...

    第七届蓝桥杯全国软件和信息技术专业人才大赛-个人赛省赛(软件类)重庆赛区获奖名单 省份重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重庆重 ...

  3. 2018第九届蓝桥杯大赛软件类国赛 C/C++ 大学 B 组

    A标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元 ...

  4. 蓝桥杯的c语言编译器,第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组比赛心得(还在更新)...

    第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组 考生须知: 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题. 考试时间为4小时.时间截止后,提交答案无效. 在考试强制结束 ...

  5. 蓝桥杯JAVA答题技巧,第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组比赛心得(还在更新)...

    第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组 考生须知: 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题. 考试时间为4小时.时间截止后,提交答案无效. 在考试强制结束 ...

  6. 第九届蓝桥杯大赛软件类国赛

    文章目录 第九届蓝桥杯大赛软件类国赛 国赛C++ A组 三角形面积 阅兵方阵 找假币 约瑟夫环 -- important 自描述序列 -- todo 采油 -- todo 国赛C++ B组 换零钞 激 ...

  7. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  8. 第九届蓝桥杯(省赛)C++C组真题题解

    文章目录 题目链接 C组真题(剩余题目同B组真题相同,已给出B组真题题目链接) 题目结构 第一题 哪天返回 第二题 猴子分香蕉 第五题 书号验证 第六题 稍小分数 第七题 次数差 第八题 等腰三角形 ...

  9. 第六届蓝桥杯大赛个人赛省赛Java B组真题

    文章目录 第六届蓝桥杯大赛个人赛省赛Java B组真题 1. 三角形面积(结果填空) 2. 立方自变身(结果填空) 3. 三羊献瑞(结果填空) 4. 循环节长度(代码填空) 5. 九数组分数(代码填空 ...

最新文章

  1. mendix归还界面如何只显示登录人自己借阅的书籍,而不显示全部人借阅的书籍
  2. android afinal 图片,android中使用afinal一行代码显示网络图片
  3. linux 上使用wc -l命令快速查看文件内容有多少行,以及如何匹配指定字符查看多少行
  4. 额外篇 | basemap(上)
  5. CVPR 2021 | 从理论和实验角度深入剖析对比损失中的温度超参数
  6. java切面1.6需要的包_Java技术 AspectJ
  7. python3-matplotlib基本使用(以折线图为例)
  8. 基于腾讯云服务器部署微信小程序后台服务(Python+Django)
  9. 常用Keytool 命令
  10. Everything文件搜索工具
  11. EDI系统-AS2传输常见问题
  12. 每个设计师都在用的UI标注工具UI切图软件——PxCook像素大厨
  13. 【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
  14. Entity 连接数据库以及操作数据库
  15. filezilla,怎么下载filezilla
  16. 找不到局域网计算机网络路径,分享解决Win10局域网找不到网络路径的技巧
  17. matlab音乐信号处理,数字信号处理课程设计---基于 MATLAB 的音乐信号处理和分析...
  18. 你离大厂前端工作,升职加薪有时就差一点算法,今天全部教给你!
  19. 【转】人家在美国怎么过的,7年,我无比惭愧
  20. 模电之半导体基础篇1(本征半导体、杂质半导体)

热门文章

  1. 提升开发效率的一款 mybatis 开发神器
  2. 提高工作效率,减少浪费生命
  3. StringBuilder转Json
  4. 中鑫吉鼎|存不到钱的年轻人,你想过为什么吗?
  5. python pip 国内源下载详细教程
  6. java改变数组长度_Java修改数组长度
  7. 服务器安装php没反应,为你解决PHP服务器安装问题_PHP教程
  8. 四轮电磁------速度环增量式PID
  9. 神奇的口袋(背包问题)
  10. 简单的图书管理系统用例图(UML)