第十六届蓝桥杯 2025 C/C++组 旗帜

目录

题目:

题目描述:

题目链接:

思路:

思路详解:

代码:

代码详解:


题目:

题目描述:

题目链接:

P12340 蓝桥杯 2025 省 AB/Python B 第二场 旗帜 - 洛谷

思路:

思路详解:

定义cnt用于记录A的数量,显然一个完整的LANQIAO有两个A。我的思路是先判断每一行存在几个完整的LANQIAO(或者它的变式),举例来说,如果w=10,不管哪一行前7位就是完整的LANQIAO(或者它的变式),那么现在就有h*(w/7)*2。

然后再来计算每一行的不足完整LANQIAO的那一部分,第一层循环遍历每一行,i从1开始。第二次循环遍历不完整部分的每一个字母,定义LANQIAO为数组str,由题第一行从L开始(即数组索引0),第二行从A开始(即数组索引1),每行向左移动一个字符。可以发现每次开始的数组索引=行数i-1,不完整部分的字母个数为w%7,所以遍历的循环条件可以写为for(int j=i-1;j<i-1+w%7;j++)。但是不难发现这样会发生访问越界的情况,比如我们现在要访问索引为7(按照我们的逻辑应该访问的是L),但是数组str的最大索引为6(一共7个字母),所以为了防止访问越界,我们可以改为j%7

代码:

代码详解:

复制代码
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int cnt=0;
	string str="LANQIAO";
	int h,w;
	cin>>h>>w;
	cnt+=h*(w/7)*2;  //每一行*完整的LANQIAO个数*完整的LANQIAO有两个A 
	for(int i=1;i<=h;i++)  //遍历每一行 
	{
		for(int j=i-1;j<i-1+w%7;j++) //访问不完整部分的每一个字母 
		{
			if(str[j%7]=='A') //防止访问越界 
			{
				cnt++;
			}
		}
	}
	cout<<cnt<<endl;
	return 0;
}
相关推荐
繁星蓝雨20 分钟前
C++设计原理———重载(extern “C“的由来、顺序依赖、语义依赖、overload、名称修饰符、对象操作、运算符重载、新增运算符、枚举和布尔类型)
c语言·c++·extern c·overload·重载·语义依赖·顺序依赖
handler0124 分钟前
【Linux】虚拟地址空间解析
linux·运维·c++·线程·进程·虚拟地址空间·虚拟地址
(Charon)27 分钟前
【C++】网络缓冲区设计(二):Ring Buffer环形缓冲区、head/tail与跨界读写
开发语言·c++
码匠许师傅37 分钟前
【设计模式精讲】24.观察者模式(Observer)
c++·观察者模式·设计模式·uml
imgsq1 小时前
S-57 数据解剖:把一个 ENC 文件拆给你看
c++·数据可视化
SuperByteMaster1 小时前
编译器将unsigned short 整体提升int和unsigned short 在内存中的分配2byte的理解
c语言
迷茫、Peanut1 小时前
中断的时钟
c++
2402_882893861 小时前
用哈希表封装 unordered_map 和 unordered_set —— 手撕 C++ 哈希容器
c++·哈希桶·unordered_map·unordered_set
熊猫钓鱼>_>2 小时前
用 OHAudioSuite 空间渲染节点搭一座「3D 有声博物馆」——从三种模式到 FreeBuds 头追的实战记录
c++·3d·ai·harmonyos·arkts·audio·ohaudiosuite
XiaoQiao6669992 小时前
C 语言常用头文件及里面核心函数
c语言·开发语言