蓝桥杯省赛真题C++B组-裁纸刀2022

一、题目

问题描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。

小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下

图给出了一种裁法。

在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。

如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次?

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

二、思路

方法一:(错误不要看了)

我的理解是一张纸只能裁剪出6个二维码,而且一张纸需要裁9次,现在有440个二维码,我们就需要看440个二维码能裁处几个整张的二维码,是否有剩下的二维码个数,有的话再看是需要裁剪几刀。440/6=73......2,最后还剩两个二维码的话,四个边需要裁四个边,还有再裁一刀分成两个二维码。73*9+4+1=662。

方法二:

想用代码的方式解决,但是看题解后,我才发现题目中的裁剪原则:四个边四刀,因为题目说了公用了9刀,所以是用了5刀裁出的。

题目问的是20 行 22 列共 440 个二维码,他至少需要裁多少次?图上的是2行3列6个二维码用了5刀(除过边),2行用了1刀,3列用了4刀(想想现实生活当中也是如此,假如先横着来一刀,剪开后的两半我们再分别去剪),类比,20行用了19刀,22列用20*(22-1)刀。

19+20*(22-1)+4=443

方法三:

找规律:

|-------|-----------|
| 二维码个数 | 裁的次数 |
| 1 | 4+0 |
| 2 | 4+1 |
| 4 | 4+3 |
| 6 | 4+5 |
| ... | ... |
| 440 | 4+(440-1) |

三、代码

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    cout << 19 + 20 * (22 - 1) + 4 << endl;
    return 0;
}

四、反思

没有好好理解题,按照我那个错误的思路,6个二维码最终是裁7刀,人家题目是裁9刀

也没有好好找规律

相关推荐
PixelMind1 小时前
【LUT技术专题】图像自适应3DLUT
图像处理·深度学习·算法·3dlut
木子.李3472 小时前
数据结构-算法学习C++(入门)
数据库·c++·学习·算法
GIS小天2 小时前
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
人工智能·算法·机器学习·彩票
武子康3 小时前
大数据-274 Spark MLib - 基础介绍 机器学习算法 剪枝 后剪枝 ID3 C4.5 CART
大数据·人工智能·算法·机器学习·语言模型·spark-ml·剪枝
爱coding的橙子5 小时前
每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
算法·leetcode·职场和发展
地平线开发者6 小时前
征程 6EM 常见 QConfig 配置解读与示例
算法·自动驾驶
GEEK零零七7 小时前
Leetcode 1908. Nim 游戏 II
算法·leetcode·博弈论
sbc-study7 小时前
混沌映射(Chaotic Map)
开发语言·人工智能·python·算法
Magnum Lehar7 小时前
vulkan游戏引擎game_types.h和生成build.bat实现
java·算法·游戏引擎
Christophe Chen7 小时前
strcat及其模拟实现
c语言·算法