# 官方题解 | 欢乐赛#64题解
2026-01-14 10:17:08
发布于:浙江
官方题解 | 欢乐赛#64题解
赛纲介绍
本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平
| 题目编号 | 题目名称 | 题目难度 |
|---|---|---|
| T1 | 皓仔的土豆脑袋 | 入门 |
| T2 | 皓仔和奶茶 | 入门 |
| T3 | 皓仔的水果筛选 | 入门 |
| T4 | 皓仔的指令执行 | 入门 |
| T5 | 皓仔的累乘 | 普及- |
| T6 | 皓仔的美丽子矩阵 | 普及- |
T1 赛跑
题目大意
直接输出一行语句 Potatoes are amazing!。
题解思路
直接使用 cout 进行输出即可。
参考代码
#include<iostream>
using namespace std;
int main(){
cout << "Potatoes are amazing!";
return 0;
}
T2 撑杆跳
题目大意
皓仔买了 包红茶和 盒牛奶来自己煮奶茶喝。
已知煮一锅奶茶需要 包红茶以及 盒牛奶, 请问皓仔手头的原料可以煮多少锅奶茶。
题解思路
可以煮的奶茶数量同时取决于红茶数量和牛奶数量。 包红茶可以煮 锅奶茶, 盒牛奶可以煮 锅奶茶,因此最终实际上可以煮的奶茶数量应当是二者之间的最小值 。
参考代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << min(a / 2, b / 3) << endl;
return 0;
}
T3 皓仔的水果筛选
题目大意
个苹果的重量分别为 , 现在皓仔将第一个苹果的质量 设定为本次出售的苹果重量基准值,重量和 差距不超过 的苹果都可以一起打包出售, 问皓仔这次可以出售多少个苹果?
题解思路
题目要求苹果质量和第一个苹果的差距不超过 , 那么可以使用绝对值表示差距: abs(a[i] - a[1]) <= 5。
或者根据数字的大小范围来判断: a[i] >= a[1] - 5 && a[i] <= a[1] + 5
遍历整个数组,每次发现符合条件的数字,则答案加一,最后输出答案即可。
参考代码
#include <iostream>
using namespace std;
int a[10010];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
int ans = 0;
for(int i = 1; i <= n; i++) {
if(a[i] >= a[1] - 5 && a[i] <= a[1] + 5) ans++;
}
cout << ans << endl;
return 0;
}
T4 皓仔的指令执行
题目大意
对于一个数字 , 执行 次指令,在每次执行之后对 取模。
对于每一条指令,令 为指令内所有字符的 码的总和, 如果 是一个奇数, 那么令 , 否则 。
题解思路
循环 次输入所有的指令,本题中对于每一条指令,我们遍历字符串内部的所有字符,计算得到总和之后,根据数字是奇数还是偶数来执行对应的指令: 如果 是一个奇数, 那么令 , 否则 ,每一次操作之后将数字对 取模。
参考代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long x,n;
cin>>x>>n;
while(n--){
string s;
cin>>s;
long long sum=0;
for(int i=0;i<s.size();i++){
sum+=s[i];
}
if(sum%2==1){
x*=x;
}else{
x*=2;
}
x%=20260101;
cout<<x<<endl;
}
return 0;
}
T5 皓仔的累乘
题目大意
皓仔计算从 累乘到 的结果,但他会避开他不喜欢的数字:凡是数位中包含数字 或 能被 整除的所有数,一律跳过不进行累乘。
题解思路
循环嵌套练手题,外层循环首先从 到 进行枚举,在内层需要进行数位分解,判断数字的数位是否含有 。
如果当前数字既不是 的倍数,也不含有数字 , 那么将其进行累乘,注意每一次需要将答案对 取模。
参考代码
#include <bits/stdc++.h>
using namespace std;
int M = 1e9 +7;
int main(){
int n, a;
cin >> n >> a;
long long ans = 1;
for(int i = 1; i <= n; i++) {
if(i % a == 0) continue;
int m = i;
bool f = true;
while(m) {
if(m % 10 == a) f = false;
m /= 10;
}
if(f) ans = ans * i % M;
}
cout << ans << endl;
return 0;
}
T6 皓仔的美丽子矩阵
题目大意
皓仔把一个子矩阵称为美丽子矩阵,当且仅当这个子矩阵的行数和列数都大于 , 并且该子矩阵的四个角(左上、右上、左下、右下)格子的颜色完全相同。
现在请你帮助皓仔统计:在整张画布中,一共有多少个美丽子矩阵?
题解思路
本题是一个子矩阵枚举的模板练习,当我们想要枚举子矩阵时候只需要做两件事情:枚举左上角的点,再枚举子矩阵右下角的点。
首先编写两重循环 枚举左上角的点 。
注意右下角的点 ,坐标需要大于等于左上角的点,因此枚举起点为 , 则枚举范围为 。
对于每一个子矩阵,判断四个角颜色是否一致,是的话答案加一。最后输出答案。
参考代码
#include <bits/stdc++.h>
using namespace std;
char a[1010][1010];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int x=i+1;x<=n;x++){
for(int y=j+1;y<=m;y++){
if(a[i][j]==a[x][y]&&a[i][j]==a[i][y]&&a[i][j]==a[x][j]){
ans++;
}
}
}
}
}
cout<<ans<<endl;
return 0;
}
全部评论 3
应该是皓仔的土豆脑袋和皓仔和奶茶
昨天 来自 广东
2请输入文本
昨天 来自 重庆
2
@你好你发的题解的T1和T2错了
昨天 来自 广东
2。
昨天 来自 重庆
1
65咋做
19小时前 来自 浙江
1

















有帮助,赞一个