9
官方题解 | 欢乐赛#64题解
赛纲介绍
本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平
题目编号 题目名称 题目难度 T1 皓仔的土豆脑袋 入门 T2 皓仔和奶茶 入门 T3 皓仔的水果筛选 入门 T4 皓仔的指令执行 入门 T5 皓仔的累乘 普及- T6 皓仔的美丽子矩阵 普及-
T1 皓仔的土豆脑袋
题目大意
直接输出一行语句 Potatoes are amazing!。
题解思路
直接使用 cout 进行输出即可。
参考代码
T2 皓仔和奶茶
题目大意
皓仔买了 aaa 包红茶和 bbb 盒牛奶来自己煮奶茶喝。
已知煮一锅奶茶需要 222 包红茶以及 333 盒牛奶, 请问皓仔手头的原料可以煮多少锅奶茶。
题解思路
可以煮的奶茶数量同时取决于红茶数量和牛奶数量。 aaa 包红茶可以煮 a/2a / 2a/2 锅奶茶, bbb 盒牛奶可以煮 b/3b / 3b/3 锅奶茶,因此最终实际上可以煮的奶茶数量应当是二者之间的最小值 min(a/2,b/3)min(a / 2, b / 3)min(a/2,b/3)。
参考代码
T3 皓仔的水果筛选
题目大意
nnn 个苹果的重量分别为 a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1 ,a2 ,⋯,an , 现在皓仔将第一个苹果的质量 a1a_1a1 设定为本次出售的苹果重量基准值,重量和 a1a_1a1 差距不超过 555 的苹果都可以一起打包出售, 问皓仔这次可以出售多少个苹果?
题解思路
题目要求苹果质量和第一个苹果的差距不超过 555, 那么可以使用绝对值表示差距: abs(a[i] - a[1]) <= 5。
或者根据数字的大小范围来判断: a[i] >= a[1] - 5 && a[i] <= a[1] + 5
遍历整个数组,每次发现符合条件的数字,则答案加一,最后输出答案即可。
参考代码
T4 皓仔的指令执行
题目大意
对于一个数字 xxx, 执行 nnn 次指令,在每次执行之后对 202601012026010120260101 取模。
对于每一条指令,令 sumsumsum 为指令内所有字符的 ASCIIASCIIASCII 码的总和, 如果 sumsumsum 是一个奇数, 那么令 x=x2x = x^2x=x2, 否则 x=2×xx = 2 \times xx=2×x。
题解思路
循环 nnn 次输入所有的指令,本题中对于每一条指令,我们遍历字符串内部的所有字符,计算得到总和之后,根据数字是奇数还是偶数来执行对应的指令: 如果 sumsumsum 是一个奇数, 那么令 x=x2x = x^2x=x2, 否则 x=2×xx = 2 \times xx=2×x,每一次操作之后将数字对 202601012026010120260101 取模。
参考代码
T5 皓仔的累乘
题目大意
皓仔计算从 111 累乘到 nnn 的结果,但他会避开他不喜欢的数字:凡是数位中包含数字 aaa 或 能被 aaa 整除的所有数,一律跳过不进行累乘。
题解思路
循环嵌套练手题,外层循环首先从 111 到 nnn 进行枚举,在内层需要进行数位分解,判断数字的数位是否含有 aaa。
如果当前数字既不是 aaa 的倍数,也不含有数字 aaa, 那么将其进行累乘,注意每一次需要将答案对 1e9+71e9 +71e9+7 取模。
参考代码
T6 皓仔的美丽子矩阵
题目大意
皓仔把一个子矩阵称为美丽子矩阵,当且仅当这个子矩阵的行数和列数都大于 111, 并且该子矩阵的四个角(左上、右上、左下、右下)格子的颜色完全相同。
现在请你帮助皓仔统计:在整张画布中,一共有多少个美丽子矩阵?
题解思路
本题是一个子矩阵枚举的模板练习,当我们想要枚举子矩阵时候只需要做两件事情:枚举左上角的点,再枚举子矩阵右下角的点。
首先编写两重循环 i→[1,n],j→[1,m]i \rightarrow [1, n], j \rightarrow [1, m]i→[1,n],j→[1,m]枚举左上角的点 (i,j)(i,j)(i,j)。
注意右下角的点 (t,k)(t, k)(t,k),坐标需要大于等于左上角的点,因此枚举起点为 (i,j)(i, j)(i,j), 则枚举范围为 t→[i,n],k→[j,m]t \rightarrow [i, n], k \rightarrow [j, m]t→[i,n],k→[j,m]。
对于每一个子矩阵,判断四个角颜色是否一致,是的话答案加一。最后输出答案。
参考代码
有帮助,赞一个