第十六届蓝桥杯 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;
}
相关推荐
Aevget7 分钟前
从业务面板到多视图协同:QtitanDocking如何驱动行业级桌面应用升级
c++·qt·ui·ui开发·qt6.3
蕓晨11 分钟前
钱币找零问题-贪心算法解析
c++·算法·贪心算法
hetao173383717 分钟前
2025-12-04 hetao1733837的刷题记录
c++·算法
mjhcsp20 分钟前
C++ 后缀自动机(SAM):原理、实现与应用全解析
java·c++·算法
集芯微电科技有限公司31 分钟前
40V/3A高性能高集成三相BLDC驱动器具有电流及故障诊断功能(FLT)
c语言·数据结构·单片机·嵌入式硬件·fpga开发
liu****35 分钟前
13.数据在内存中的存储
c语言·开发语言·数据结构·c++·算法
渡我白衣1 小时前
并行的野心与现实——彻底拆解 C++ 标准并行算法(<execution>)的模型、陷阱与性能真相
java·开发语言·网络·c++·人工智能·windows·vscode
闻缺陷则喜何志丹1 小时前
【几何】二维矢量叉乘、正弦定理、三维叉乘及鞋带公式(高斯面积公式)
c++·数学·正弦定理·鞋带公式·矢量叉乘·简单多边形面积
liu****1 小时前
15.自定义类型:联合和枚举
数据结构·c++·剪枝
冉佳驹1 小时前
C++ ——— 动态内存管理和泛型编程的核心机制
c++·delete·模板·new·operator new·operator delete·定位 new