洛谷P12340 [蓝桥杯 2025 省 AB/Python B 第二场] 旗帜
P12340 [蓝桥杯 2025 省 AB/Python B 第二场] 旗帜
题目描述
小蓝要画一个 LANQIAO 图形,并把这个图形做成一个旗帜。图形的形状为一个 \(h \times w\) 的矩形,其中 \(h\) 表示图形的高,\(w\) 表示图形的宽。当 \(h = 5, w = 10\) 时,图形如下所示:
LANQIAOLAN
ANQIAOLANQ
NQIAOLANQI
QIAOLANQIA
IAOLANQIAO
图形的规律是:第一行用 LANQIAO 重复填入,第二行开始,每行向左移动一个字符,用 LANQIAO 重复填入。
小蓝需要把图形中的每个字母都剪出来,以粘贴到旗帜上,他想知道,给定图形的高和宽,图形中有多少个 A。
输入格式
输入的第一行包含两个正整数 \(h, w\),用一个空格分隔。
输出格式
输出一行包含一个整数表示答案。
输入输出样例 #1
输入 #1
5 10
输出 #1
14
说明/提示
评测用例规模与约定
- 对于 \(30\%\) 的评测用例,\(h = 1\),\(1 \leq w \leq 20\);
- 对于 \(60\%\) 的评测用例,\(1 \leq h, w \leq 20\);
- 对于所有评测用例,\(1 \leq h, w \leq 100\)。
题目链接
https://www.luogu.com.cn/problem/P12340
解题思路
- 第i行相对于原始字符串向左偏移i位,该行第j列对应的原始字符串下标为 pos=(i+j)%7
代码实现
// 模拟
#include<bits/stdc++.h>
using namespace std;
const string s="LANQIAO";
int cnt;
int main()
{
int h,w;cin>>h>>w;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
int pos=(i+j)%7;
if(s[pos]=='A')cnt++;
}
}
cout<<cnt;
return 0;
}
浙公网安备 33010602011771号