2023年2月蓝桥STEMA评测C++中级组编程题(个人代码学习)(持续更新)
第一题
编程实现:求和
题目描述:
有一组1到100000的正整数数据,当给定一个正整数N(1<N<100000),求出其左右相邻的两个正整数的和。
例如:N = 6,6左边相邻的正整数为5,6右边相邻的正整数为7,两个正整数的和为12(12=5+7)。
输入描述
输入一个正整数N(1<N<100000)
输出描述
输出一个正整数,表示N左右相邻的两个正整数的和
样例输入
6
样例输出
12
#include<iostream>
using namespace std;
int main(){int N;cin>>N;cout<<(N-1)+(N+1);//cout<<2*N;//同样效果 return 0;
}
题目解析:
题目的要求就是实现输入一个正整数N,
然后输出N-1和N+1的和,也就是N的2倍(2*N)
数据规模不算大,
正整数以及1<N<100000的数据范围
也提示避开了1和0这类特殊边界数值。
所以通过整数类型直接求出N-1和N+1的和即可。
输入输出格式上没有特殊需求。
第二题:
编程实现:数字判断
题目描述:
给定两个正整数N和M(10≤N<M≤10000),请计算出N到M之间(包含N和M)的所有正整数中,各位上的数字都为奇数的正整数有多少个。
例如:N = 110,M = 119,
110到119之间的所有正整数有110、111、112、113、114、115、116、117、118、119;
其中各位上的数字都为奇数的正整数有111、113、115、117、119,共5个。
输入描述
输入两个正整数N和M(10≤N<M≤10000),正整数之间以一个空格隔开
输出描述
输出一个整数,表示N到M之间(包含N和M)的所有正整数中,各位上的数字都为奇数的正整数的个数
样例输入
110 119
样例输出
5
#include<cstdio>
using namespace std;
int main(){int N,M,cnt = 0;//cnt用于统计符合条件的数的个数scanf("%d %d",&N,&M);for(int i=N;i<=M;i++){int j = i;//利用临时变量j来分解数位int tmp = 0;//tmp记录数位出现偶数的次数 /*======拆分数位判断过程======*/while(j){//拆数位 int k = j%10;//取出个位 if(k%2==0){//一旦发现该数位是偶数 tmp++;//tmp更新 break;//跳出循环,没必要再判断下一个数位了 }j/=10;//每次将个位去掉 }if(tmp==0){//如果tmp还是0,说明每个数位都是奇数 cnt++;} /*======拆分数位判断过程======*/ } printf("%d",cnt);return 0;
}
题目解析:
题目的要求就是在正整数N与M之间的任意数之中,
如果这个数的各数位都是奇数,就统计入计数。
这里需要注意的是数据的范围,10≤N<M≤10000。
因此每个数的数位长度不一定相同,必须采用循环来分解数位。
在判断思路上,依次看每个数位是否为奇数,
都满足则加入统计,这是一种方式;
另一种方式是立一个临时变量初始值为0,
碰到一个数位是偶数,就修改临时变量,
如果最后临时变量为零,说明所有数位都是奇数。
第三题:
编程实现:扑克牌
题目描述:
有N(3≤N≤50)张反面朝上的扑克牌排成一排,每次可以翻转任意3张扑克牌(正面翻转后为反面,反面翻转后为正面,且不考虑正面花色和点数),请问最少翻转几次可以将N张扑克牌全部翻转为正面。
例如:
N=5,最少翻转3次可以使5张扑克牌全部翻转为正面朝上。
输入描述
输入一个正整数N(3≤N≤50),表示扑克牌的数量
输出描述
输出一个整数,如果可以将N张反面朝上的扑克牌全部翻转为正面朝上,输出最少需要翻转的次数,否则输出-1
样例输入
5
样例输出
3
#include<iostream>
using namespace std;
int main() {int N;cin>>N;if(N==4) {cout<<4<<endl;} else {cout<<N/3+N%3<<endl;}return 0;
}
题目解析:
有N(3≤N≤50)张反面朝上的扑克牌。
每次翻转任意3张,
最少翻转几次可以将N张扑克牌全部翻转为正面。
如果模拟几个情况,就会发现其中规律:
(以下用1表示反面,0表示正面)
当N=4时,翻4次;
1 1 1 1
0 0 0 1
0 1 1 0
1 0 1 1
0 0 0 0
当N=5时,翻3次;
1 1 1 1 1
0 0 0 1 1
0 1 1 0 1
0 0 0 0 0
当N=6时,翻2次;
1 1 1 1 1 1
0 0 0 1 1 1
0 0 0 0 0 0
当N=7时,翻3次;
1 1 1 1 1 1 1
0 0 0 1 1 1 1
0 0 1 0 0 1 1
0 0 0 0 0 0 0
当N=8时,翻4次;
1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1
0 0 0 0 0 0 1 1
0 0 0 0 1 1 0 1
0 0 0 0 0 0 0 0
当N=9时,翻3次;
1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0
当N=10时,翻4次;
1111111111
0001111111
0000001111
0000010011
0000000000
当N=11时,翻5次;
11111111111
00011111111
00000011111
00000000011
00000001101
00000000000
这时候会发现当这个数是3的倍数(能被3整除),倍数就是翻转的次数。//余数为0时
要注意4这个特殊的边界存在,其余的数都符合以下规则:
当这个数除3余1或余2时,请注意看样例,是不是最后的步骤都一样,
最后步骤的执行次数,恰好是除3的余数。
而相同步骤之前翻转的次数,恰好是除3的商。
再仔细看看发现翻转次数正好是除3的余数与商之和。
第四题:
编程实现:最大空白区
题目描述:
小明有一张N*M的方格纸,且部分小方格中涂了颜色,部分小方格还是空白。
给出N(2≤N≤30)和M(2≤M≤30)的值,及每个小方格的状态(被涂了颜色小方格用数字1表示,空白小方格用数字0表示),请帮助小明找出最大的矩形空白区域,并输出该矩形空白区域由多少个小方格组成。
例如:N=4,M=5,4*5的方格纸中每个小方格的状态如下图:
最大的空白区域由6个小方格组成(红色框区域)。
输入描述
第一行输入两个正整数N和M(2≤N≤30,2≤M≤30),分别表示方格纸的行数和列数,两个正整数之间以一个空格隔开
第二行开始输入N行,每行M个整数(整数为1或者0),1表示涂色方格,0表示空白方格,整数之间以一个空格隔开
输出描述
输出一个整数,表示最大矩形由多少个小方格组成(如果没有空白小方格,输出0)
样例输入
4 5
1 1 0 0 0
1 0 1 0 0
0 0 0 1 1
0 0 0 1 0
样例输出
6
#include<cstdio>
using namespace std;
int main(){int N,M;int max = 0; scanf("%d %d",&N,&M);int arr[N][M];//输入过程 for(int i=0;i<N;i++){for(int j=0;j<M;j++){scanf("%d",&arr[i][j]); }}//寻找最大矩形过程for(int i=0;i<N;i++){for(int j=0;j<M;j++){int tmp = 0;//每个点开始范围判断for(int x=i;x>=0;x--){for(int y=j;y>=0;y--){int sum = 0;for(int a=i;a>=x;a--){for(int b=j;b>=y;b--){sum += arr[a][b];}}if(sum==0){tmp = (i-x+1)*(j-y+1);if(tmp>max) max = tmp;}}}}} printf("%d\n",max);system("Pause");return 0;
}
题目解析:
当遍历到每个元素时,以当前元素为起点,以行列0下标为边界逐层圈定范围。由于元素都是1和0,通过统计圈定范围的元素的总和,如果结果等于0,说明都是由0组成。再通过圈定范围的二维数组的行列下标计算出元素个数,如果是最多的更新最大空白区值。
2023年2月蓝桥STEMA评测C++中级组编程题(个人代码学习)(持续更新)相关推荐
- 2022年12月蓝桥STEMA评测C++中级组编程题
第一题: 编程实现:求位数 题目描述: 给定一个正整数N(1<N<10^8),输出N为几位数. 输入描述 输入一个正整数N(1<N<10^8) 输出描述 输出一个整数,表示N为 ...
- 12届蓝桥杯青少年组国赛C++中级组编程题
编程题,共6题 第一题:加密(30分) 给定一个只含英文字母(英文字母含大小写字母)的字符串作为原始密码,按照规则将其加密,并输出加密后的密码. 加密原则:原始密码每一位上的字母,使用其在字母表中其后 ...
- 第十三届蓝桥杯省赛(2022年4月17日)C++中级组题解
目录 前言 一.选择题 1.题目描述 2.参考答案 二.编程题 1.比较大小 题目描述 题目解析 AC代码 2.分成整数 题目描述 题目解析 AC代码1(模拟) AC代码2(dfs) 3.组合 题目描 ...
- 魔术表演-第14届蓝桥杯省赛Scratch中级组真题第1题
[导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第136讲. 魔术表演,本题是2023年5月7日举行的 ...
- java dfs算法蓝桥杯题_【蓝桥杯省赛JavaB组真题详解】四平方和(2016)_疼疼蛇的博客-CSDN博客...
原文作者:疼疼蛇 原文标题:[蓝桥杯省赛JavaB组真题详解]四平方和(2016) 发布时间:2021-02-26 15:00:01 题目描述 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数 ...
- 6.python解答蓝桥杯17年A组真题 迷宫
6.python解答蓝桥杯17年A组真题 迷宫 标题:迷宫(填空题) X星球的一处迷宫游乐场建在某个小山坡上. 它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母. 我们假设玩家 ...
- 2019年第十届蓝桥杯省赛B组真题解析
A 组队 试题A 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球员担任 1号位至 5号位时的评分如下表所示.请你计算首 ...
- 蓝桥杯青少年创意编程python初级考察内容_第十一届蓝桥杯青少年创意编程scratch初级组编程题详解...
点击上方"启迪少儿"即可关注 今年的12月15日是第十一届蓝桥杯青少赛的第二次选拔赛,安徽.北京.福建.广东.广西.河北.黑龙江.湖南.吉林.江苏.江西.辽宁.宁夏.山西.陕西.四 ...
- 蓝桥杯C/C++b组第一题个人整理合集(5年真题+模拟题)
蓝桥杯C/C++b组填空第一题合集 前言 比赛标准的签到题,比赛时的第一题.不会考到什么算法,甚至都不需要你打代码.但有时候第一题都没做出来的确是非常挫灭信心 看了看历年题目.很多小陷阱也不少 今年的 ...
最新文章
- SpringBoot实践:更换启动Logo字样
- 用筛法求之N内的素数。(N 1000000)
- 【OpenCV3】图像的读取、显示与保存
- GestureDetector.OnGestureListener 详解
- php session_start() 非常慢,php – session_start似乎很慢(但是有时候)
- IAP-应用内购买流程
- python导入同一文件夹下的类_Python模块导入机制与规范
- HTML5要点(四)对象全整理
- html下拉框设置默认值_html 里select 下拉列表中设置默认值怎么写
- OpenCV编程-无法解析的外部符号 void __cdecl cv::cvtColor
- require-ensure
- c语言贪吃蛇最简单代码_让我们跑一个最简单的GAN网络吧!(附Jupyter Notebook 代码)...
- 分享国外安全团队及工具
- 微信小程序订阅消息通过服务通知发送
- aligned内存对齐
- android sim卡槽,一加5怎么装卡/插卡 一加手机5 SIM卡安装图文教程
- mysql5.045_Microsoft SQL Server数据库各版本下载地址集合
- B端运营是在做什么 toB
- matlab仿真加入反冲模块,saturation模块作用
- 解决Yum install 安装报错问题
热门文章
- ubuntu linux改中文语言包,Ubuntu安装中文语言包
- 进口奥迪S6让人无法忽视的低调
- 怎么让录屏文件变小_爱折腾的玲子这段时间怎么过的?(二)
- Matplotlib 库柱形图设置颜色
- Haffman编码实现文本压缩-C语言-万字长文,绝对详细
- 银行软件测试bug解决,解决软件测试Bug的五个阶段
- 试图速成的RPG Maker MV 学习笔记(一)
- KubeSphere部署Nacos集群
- bzoj1951 [Sdoi2010]古代猪文
- 【Fiddler Everywhere】2022最强抓包工具(安装 修改教程)