第十三届蓝桥杯(C/C++ 大学B组)

目录

试题 A: 九进制转十进制

试题 B: 顺子日期

试题 C: 刷题统计

试题 D: 修剪灌木

试题 E: X 进制减法

试题 F: 统计子矩阵

试题 G: 积木画

试题 H: 扫雷

试题  I: 李白打酒加强版

试题 J: 砍竹子


试题 A: 九进制转十进制

九进制正整数 ( 2022 )转换成十进制等于多少?

#include <bits/stdc++.h>
using namespace std;int main()
{int c, ans = 0;while (c = getchar(), '0' <= c && c <= '9')ans = ans * 9 + c - '0';cout<<ans<<endl; //1478return 0;
}

试题 B: 顺子日期

小明特别喜欢顺子。顺子指的就是连续的三个数字: 123 、 456 等。顺子日期指的就是在日期的 yyyymmdd表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123;而 20221023则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期。

#include <bits/stdc++.h>using namespace std;
int date1[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    //确定2022年的每月的天数
int main()
{int b[8];                              //b[0]到b[4]表示的是2022年b[0] = 2;b[1] = 0;        b[2] = 2;b[3] = 2;int sum = 0;for (int i = 1; i <= 12; i++)         //从一月到12月{b[4] = i / 10;                //月数的高位b[5] = i % 10;                //月数的低位for (int j = 1; j <= date1[i]; j++)   //从每月的第一天到最后一天{b[6] = j / 10;                //表示天数的高位b[7] = j % 10;                //表示天数的低位if ((b[4] + 1 == b[5] && b[5] + 1 == b[6]) || (b[5] + 1 == b[6] && b[6] + 1 == b[7]))  //如果是顺子日期就+1{sum++;}}}cout << sum << endl;return 0;
}

试题 C: 刷题统计

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a道题目,周六和周日每天做 b道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n题?

输入格式:输入一行包含三个整数a,b和n。

输出格式:输出一个整数代表天数。

样例输入:10 20 99

样例输出:8

#include <bits/stdc++.h>
using namespace std;int main()
{long long a,b,n,ans;cin>>a>>b>>n; ans = n / (5 * a + 2 * b) * 7;n %= 5 * a + 2 * b;if (n > 5 * a)ans += 5 + ((n - 5 * a) + b - 1) / b;elseans += (n + a - 1) / a;cout<<ans<<endl;return 0;
}

试题 D: 修剪灌木

爱丽丝要完成一项修剪灌木的工作。

  有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0  厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。

  灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

输入格式:一个正整数N,含义如题面所述。

输出格式:输出N行,每行一个整数,表示从左到右第i棵树最高能长到多高。

样例输入:3

样例输出:

4

2

4

#include <bits/stdc++.h>
using namespace std;int n,a[10005];int main()
{int n;cin>>n;for(int i = 1;i <= n;i++){cout<<max(2*(i-1),2*(n-i))<<endl;}return 0;
}

试题 E: X 进制减法

进制规定了数字在数位上逢几进一。

  X 进制是一种很神奇的进制,因为其每一数位的进制并不固定!例如说某种 X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则 X进制数 321 转换为十进制数为 65 。

  现在有两个 X 进制表示的整数 A 和 B ,但是其具体每一数位的进制还不确定,只知道 A  和 B 是同一进制规则,且每一数位最高为 N 进制,最低为二进制。请你算出 A − B 的结果最小可能是多少。

请注意,你需要保证 A 和 B 在 X 进制下都是合法的,即每一数位上的数字要小于其进制。

输入格式:

第一行一个正整数N,含义如题面所述。

第二行一个正整数Ma,表示x进制数A的位数。

第三行Ma个用空格分开的整数,表示x进制数A按从高位到低位顺序各个数位上的数字在十进制下的表示。

第四行一个正整数Mb,表示x进制数B的位数。

第五行Mb个用空格分开的整数,表示x进制数B按从高位到低位顺序各个数位上的数字在十进制下的表示。

请注意,输入中的所有数字都是十进制的。

输出格式:

输出一行一个整数,表示x进制数A-B的结果的最小可能值转换为十进制后再模1000000007的结果。

样例输入:

11
3
10 4 0
3
1 2 0

样例输出:

94
#include <bits/stdc++.h>
using namespace std;const int vinf = 100010;
const int mod = 1000000007;
typedef long long ll;
int a[vinf],b[vinf];
int weights[vinf];	//单个位数上的权值 
ll ans; int main()
{/*例如:3 的进制为8,2的进制为10,1的进制为23 2  18 10 2			1 + 2 * 2 + 3 * 10 * 2 = 6510 4 011 5 2			0 + 4 * 2 + 10 * 5 * 2 = 108当进制为:最低位 2 进制,第二数位 5 进制,第三数位 11 进制时,减法得到的差最小。*/int N;	//最大进制数cin>>N;int na,nb;cin>>na;for(int i = na;i >= 1;i--) //从高位开始输入 cin>>a[i];cin>>nb;for(int i = nb; i >= 1;i--)cin>>b[i]; //选取位数多的int max_num = max(na,nb);	//计算每一位上的权值for(int i = 1;i <= max_num;i++)weights[i] = max(max(a[i], b[i]) + 1, 2);//计算两个数字的按权展开的和ll A = 0, B = 0;for(int i = na;i >= 1;i--)A = (A * weights[i] + a[i]) % mod;for(int i = nb;i >= 1;i--)B = (B * weights[i] + b[i]) % mod;	ans = (A - B) % mod;cout<<ans<<endl;return 0;
}

试题 F: 统计子矩阵

给定一个N*M的矩阵A,请你统计有多少个子矩阵(最小1*1,最大N*M)满足子矩阵中所有数的和不超过给定的整数K?

输入格式:

第一行包含三个整数N,M和K。

之后N行每行包含M个整数,代表矩阵A。

输出格式:

一个整数代表答案。

样例输入:

3 4 10
1 2 3 4
5 6 7 8
9 10 11 12
19
#include <bits/stdc++.h>
using namespace std;const int MAX = 501;
typedef long long ll;
int area[MAX][MAX];
ll ans = 0;int main()
{int n,m,k;cin>>n>>m>>k;for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){cin>>area[i][j];area[i][j] += area[i-1][j]; //前缀和 }}//滑动窗口算法for(int start = 1;start <= n;start++) //起始行 {for(int end = start;end <= n;end++) //最终行 {//滑动窗口的边界 int l = 1,r = 1,sum = 0;for(;r <= m;r++){//扩大窗口 sum += area[end][r] - area[start - 1][r];while(sum > k){//缩小窗口 sum -= area[end][l] - area[start - 1][l];//左边界右移 l++;}//算数 ans += r - l + 1;}}}cout<<ans<<endl;return 0;
}

试题 G: 积木画

样例输入:

3

样例输出:

5
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int mod = 1e9+7;
const int m = 10000000;
int f[m][3];
ll n;int main()
{cin.tie(0),cout.tie(0);ios::sync_with_stdio(false);//设f[i][0]表示当前拼完了前i列的方案数,//f[i][1]表示当前拼完了前i-1列,且第i列拼完了上面方格的方案数,//f[i][2]表示当前拼完了前i-1列,且当前第i列拼完了下面方格的方案数。f[0][0] = 1;cin>>n;for(int i = 1;i <= n;i++){f[i][0] = (f[i-1][0] + f[i-1][1] + f[i-1][2]) % mod;if(i >= 2){f[i][0] = (f[i][0] + f[i-2][0]) % mod;f[i][1] = (f[i-1][2] + f[i-2][0]) % mod;f[i][2] = (f[i-1][1] + f[i-2][0]) % mod;}}cout<<f[n][0];return 0;
}

试题 H: 扫雷

样例输入:

2 1
2 2 4
4 4 2
0 0 5

样例输出:

2
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int M = 999997;
const ll Base = 1e9 + 7;
int hash[M];	//哈希值,用于维护find函数 
int num[M];	//当前位置有多少个炸弹 
int radius[M];	//当前位置的半径 
int visited[M];	//是否访问过 
int res;//降维
ll get_key(int x,int y)
{return x * Base + y;
}
//哈希函数
int find(int x)
{int t = (x % M + M) % M;while(hash[t] != -1 && hash[t] != x){t++;while(t == M) t = 0;}return t;
} 
//判断是否在范围内
bool judge(int x,int y,int r,int x2,int y2)
{int d = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);return d <= r * r;
} void dfs(int x,int y,int r)
{for(int i = -r;i <= r;i++){for(int j = -r;j <= r;j++){int dx = x + i;int dy = y + j;int k = get_key(dx,dy);int t = find(k);while(hash[t] && judge(x,y,r,dx,dy) && !visited[t]){res += num[t];			//答案加上该点地雷个数visited[t] = 1;dfs(dx,dy,radius[t]);	//搜索下一个点}}}
}int main()
{cin.tie(0),cout.tie(0);ios::sync_with_stdio(false);int n,m;cin>>n>>m;memset(hash,-1,sizeof hash);for(int i = 0;i < n;i++){int x,y,r;cin>>x>>y>>r;int k = get_key(x,y);int t = find(k);hash[t] = k;num[t]++;		 //统计该点地雷数量radius[t] = max(r,radius[t]);	//记录该点地雷半径的最大值}for(int i = 0;i < m;i++){int x,y,r;cin>>x>>y>>r;dfs(x,y,r);	//从每一个排雷火箭引爆点开始dfs}cout<<res;return 0;
}

试题  I: 李白打酒加强版

样例输入:

5 10

样例输出:

14
#include <bits/stdc++.h>
using namespace std;int mod = 1e9 + 7;
int dp[101][101][101];int main()
{cin.tie(0),cout.tie(0);ios::sync_with_stdio(false);int n,m;cin>>n>>m;dp[0][0][2] = 1;for(int i = 0;i <= n;i++)for(int j = 0;j <= m;j++)for(int k = 0;k <= m;k++){//遇到花if(j && k) dp[i][j][k] = (dp[i][j][k] + dp[i][j-1][k+1]) % mod;//遇到店 if(i && k % 2 == 0) dp[i][j][k] = (dp[i][j][k] + dp[i-1][j][k/2]) % mod;}//最后一次需要是花 cout<<dp[n][m-1][1];return 0;
}

试题 J: 砍竹子

样例输入:

6
2 1 4 2 6 7

样例输出:

5
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
struct Node
{ll h;int idx;bool operator <(const Node &rhs) const{if(h == rhs.h) return idx > rhs.idx; //索引升序 return h < rhs.h; //高度降序 }
};
priority_queue<Node> q;
int ans;int main()
{cin.tie(0),cout.tie(0);ios::sync_with_stdio(false);int n,h;cin>>n;for(int i = 1;i <= n;i++) {cin>>h;q.push((Node){h,i});}while(!q.empty()){Node node = q.top();q.pop();if(node.h == 1) continue;while(!q.empty() && q.top().h == node.h && q.top().idx == node.idx + 1){node.idx = q.top().idx;q.pop();}node.h = sqrtl(node.h / 2 + 1);if(node.h > 1) q.push(node);ans++;}cout<<ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hypermesh碰撞安全之安全带缠绕建模

进入安全带建模&#xff08;Analysis→safety→belt routing) ①肩带的创建 注&#xff1a;end types: 表示2D和1D单元的过渡方式 ②腰带的创建 ③修改接触系数

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Tabs)

通过页签进行内容视图切换的容器组件&#xff0c;每个页签对应一个内容视图。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件从API Version 11开始默认支持安全区避让特性(默认值为&#x…

【老旧小区用电安全谁能管?】安科瑞智慧用电安全管理系统解决方案

行业背景 电气火灾指由电气故障引发的火灾。每年以30%的比例高居各类火灾原因之首。以50%到80%的比例高居重特大火灾之首。已成为业界重点关注的对象并为此进行着孜孜不倦的努力。 国务院安委会也于2017年5月至2020年4月年开展了为期3年的电气火灾综合治理工作。在各界努力的…

HJ212协议C#代码解析实现

HJ212协议C#代码解析实现 HJ212协议是环保中一个非常重要的标准协议&#xff08;字符串协议&#xff09;&#xff0c;之前写了两篇C HJ212协议解析的相关博文&#xff1a; 环保 HJ212协议解析基于Qt5.14.2的HJ212 TCP服务端接收解析入库程序 最近在学习C#&#xff0c;所以打算…

Liunx系统部署服务应用常用的命令操作

根目录下文件夹的用途 在 Linux 系统中&#xff0c;各个文件夹有着明确的目的和用途。基于您提供的列表&#xff0c;以下是这些文件夹的基本解释&#xff1a; bin: 存放二进制可执行文件&#xff0c;这些是普通用户和系统管理员常用的基本命令和应用程序。 boot: 包含启动 Li…

人工智能的发展与未来

人工智能&#xff08;Artificial Intelligence&#xff0c;简称 AI&#xff09;是一门极富挑战性的科学&#xff0c;它涉及计算机科学、控制论、信息论、语言学、神经生理学、心理学、数学、哲学等多种学科的相互渗透。人工智能的研究课题广泛&#xff0c;旨在让机器学会思考&a…

开启clas小猫咪后hosts解析失效不起作用

问题描述 开发网站时经常将域名某个域名&#xff0c;如abc.com写入hosts文件将域名解析劫持到127.0.0.1&#xff0c;方便本地测试用。 但在开启小猫咪clas后&#xff0c;hosts失效&#xff0c;访问了域名指向的真实ip。这种情况是引文dns解析被接管&#xff0c;导致hosts不能使…

蓝桥杯刷题|01普及-真题

目录 [蓝桥杯 2013 省 B] 翻硬币 题解 题目背景 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2015 省 B] 移动距离 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2021 国 BC] 大写 题目描述 输入格式 输…

接口幂等性问题和常见解决方案

接口幂等性问题和常见解决方案 1.什么是接口幂等性问题1.1 会产生接口幂等性的问题1.2 解决思路 2.接口幂等性的解决方案2.1 唯一索引解决方案2.2 乐观锁解决方案2.3 分布式锁解决方案2.4 Token解决方案(最优方案) 3 Token解决方案落地3.1 token获取、token校验3.2 自定义注解,…

小蓝的漆房——算法思路

题目链接&#xff1a;1.小蓝的漆房 - 蓝桥云课 (lanqiao.cn) 本题只要是通过枚举的方法&#xff0c;算出涂成每一种颜色所需的天数&#xff0c;最后在所有天数中找出最小值&#xff08;由题可知&#xff0c;最多只有60种颜色&#xff0c;所以可以尝试算出每种颜色所需的时间&am…

如何降低云计算成本?

降低云计算成本的方法有很多&#xff0c;以下是一些关键的策略和建议&#xff1a; 优化资源使用&#xff1a; 自动缩放&#xff1a;根据工作负载的需求自动调整计算资源的大小。对于不需要大量扩展的低优先级工作负载&#xff0c;可以设置性能限制&#xff0c;并在适当的情况下…

SpringBoot有哪些优缺点呢

1、SpringBoot优点 简化配置&#xff1a; Spring Boot 提供了自动配置功能&#xff0c;大大简化了项目的配置过程&#xff0c;开发者不再需要手动配置大量的 XML 文件或注解。 快速启动&#xff1a; Spring Boot 可以快速启动应用程序&#xff0c;减少了开发周期&#xff0c;…

LeetCode刷题小记 八、【回溯算法】

1.回溯算法 文章目录 1.回溯算法写在前面1.1回溯算法基本知识1.2组合问题1.3组合问题的剪枝操作1.4组合总和III1.5电话号码的字母组合1.6组合总和1.7组合总和II1.8分割回文串1.9复原IP地址1.10子集问题1.11子集II1.12非递减子序列1.13全排列1.14全排列II1.15N皇后1.16解数独 写…

react中hooks使用限制

只能在最顶层使用Hook 不要在循环、条件中调用hook&#xff0c;确保总是在React函数最顶层使用它们 只能React函数中调用Hook 不要在普通的js函数中调用 在React的函数组件中调用Hook 在自定义hook中调用其他hook 原因&#xff1a; 我们每次的状态值或者依赖项存在哪里&…

springCloudeAlibaba的使用

父pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

数据库中逻辑运算符的介绍以及优先级表

简介&#xff1a;逻辑运算符主要判断表达式的真假&#xff0c;返回值为1&#xff0c;0&#xff0c;null 其中包含&#xff1a; 逻辑非&#xff1a;not或&#xff01; 逻辑与&#xff1a;and或&& 逻辑或&#xff1a;or或|| 逻辑异或&#xff1a;XOR 1.逻辑非运算 规则…

mac打开exe文件的三大方法 mac怎么运行exe文件 mac打开exe游戏 macbookpro打开exe

exe文件是Windows系统的可执行文件&#xff0c;虽然Mac系统上无法直接打开exe文件&#xff0c;但是你可以在Mac电脑上安装双系统或者虚拟机来实现mac电脑上运行exe文件。除了这两种方法之外&#xff0c;你还可以在Mac电脑上使用类虚拟机软件打开exe文件&#xff0c;这三种方法各…

双指针 | 移动零 | 复写零

1.移动零 题目描述&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 示例&#xff1a; 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]解题思路&#xff1a; right指针一直往后移动&#xff0c;当…

欧洲跨境物流仓库视频监控系统开发的解决方案

中国联通针对仓储物流行业的数字化需求&#xff0c;提供全面的解决方案&#xff0c;特别是在海外仓储领域&#xff0c;我们深谙企业面临的挑战&#xff0c;如预算限制、仓储空间需求以及城郊网络覆盖不足等问题。我们利用自身强大的网络资源和技术实力&#xff0c;为出海仓储企…

redis学习-Hash类型相关命令及特殊情况分析

目录 1. hset KEY key1 value1 key2 value2 ... 2. hget KEY key 3. hgetall KEY 4. hmget KEY key1 key2 ... 5. hkeys KEY 6. hvals KEY 7. hdel KEY key1 key2 ... 8. hlen KEY 9. hexists KEY key 10. hincrby KEY key num 11. hsetnx KEY key value Hash的内部…