第十六届蓝桥杯 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;
}
相关推荐
凌肖战12 分钟前
力扣上C语言编程题:最大子数组和(涉及数组)
c语言·算法·leetcode
德先生&赛先生36 分钟前
深入理解c语言中的static
c++
景彡先生1 小时前
C++ 中的 iostream 库:cin/cout 基本用法
开发语言·c++
SY师弟3 小时前
台湾TEMI协会竞赛——1、龙舟机器人组装教学
c语言·单片机·嵌入式硬件·机器人·嵌入式·台湾temi协会
学习噢学个屁4 小时前
基于STM32音频频谱分析设计
c语言·stm32·单片机·嵌入式硬件·音视频
SundayBear4 小时前
适合有C基础后快速上手C++
开发语言·c++
顾三殇4 小时前
【自考】《计算机信息管理课程实验(课程代码:11393)》华师自考实践考核题型解析说明:C++ 与 mysql 实践题型与工具实践题分析
c++·mysql·华师自考实践考核题型分析
newki4 小时前
【NDK】项目演示-Android串口的封装工具库以及集成的几种思路
android·c++·app
whoarethenext4 小时前
使用 C++ 和 OpenCV 构建智能答题卡识别系统
开发语言·c++·opencv
Epiphany.5564 小时前
堆排序code
数据结构·c++·算法