蓝桥杯省赛真题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刀

也没有好好找规律

相关推荐
feifeigo123几秒前
基于马尔可夫随机场模型的SAR图像变化检测源码实现
算法
fengfuyao98526 分钟前
基于STM32的4轴步进电机加减速控制工程源码(梯形加减速算法)
网络·stm32·算法
无敌昊哥战神1 小时前
深入理解 C 语言:巧妙利用“0地址”手写 offsetof 宏与内存对齐机制
c语言·数据结构·算法
小白菜又菜2 小时前
Leetcode 2075. Decode the Slanted Ciphertext
算法·leetcode·职场和发展
Proxy_ZZ02 小时前
用Matlab绘制BER曲线对比SPA与Min-Sum性能
人工智能·算法·机器学习
黎阳之光2 小时前
黎阳之光:以视频孪生领跑全球,赋能数字孪生水利智能监测新征程
大数据·人工智能·算法·安全·数字孪生
小李子呢02112 小时前
前端八股6---v-model双向绑定
前端·javascript·算法
前端大波3 小时前
前端面试通关包(2026版,完整版)
前端·面试·职场和发展
2301_822703203 小时前
Flutter 框架跨平台鸿蒙开发 - 创意声音合成器应用
算法·flutter·华为·harmonyos·鸿蒙
zhaoshuzhaoshu3 小时前
人工智能(AI)发展史:详细里程碑
人工智能·职场和发展