2026年6月GESP真题及题解(C++三级):加密
2026年6月GESP真题及题解(C++三级):加密

题目描述
小杨同学有一串数字,想把它们变成另一串数字,这个过程叫做加密。
他有一本密码本,密码本告诉你:每个数字应该变成哪个数字。
数字一共有 10 10 10 个: 0 0 0、 1 1 1、 2 2 2、 3 3 3、 4 4 4、 5 5 5、 6 6 6、 7 7 7、 8 8 8、 9 9 9。
密码本会依次告诉你:
- 0 0 0 要变成什么
- 1 1 1 要变成什么
- 2 2 2 要变成什么
- ……
- 9 9 9 要变成什么
请你按照密码本,把原来的每个数字都换成新的数字,然后输出。
输入格式
输入共有 3 3 3 行。
第一行:一个整数,表示有多少个数字需要加密;
第二行:这些需要加密的数字;
第三行:密码本,一共 10 10 10 个数字。
这 10 10 10 个数字的意思是:
- 第 1 1 1 个数字:表示 0 0 0 加密后变成什么;
- 第 2 2 2 个数字:表示 1 1 1 加密后变成什么;
- 第 3 3 3 个数字:表示 2 2 2 加密后变成什么;
- ……
- 第 10 10 10 个数字:表示 9 9 9 加密后变成什么。
输出格式
输出加密后的数字。
也就是:把输入第二行里的每个数字,都按照输入第三行的密码本换掉后输出。
输入输出样例 1
输入 1
7
0 2 0 3 4 1 9
9 0 1 2 3 4 5 6 7 8
输出 1
9 1 9 2 3 0 8
说明/提示
第二行要加密的数字是:
0 2 0 3 4 1 9 0 \ 2 \ 0 \ 3 \ 4 \ 1 \ 9 0 2 0 3 4 1 9
第三行密码本是:
9 0 1 2 3 4 5 6 7 8 9 \ 0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 9 0 1 2 3 4 5 6 7 8
它的意思是:
- 0 0 0 变成 9 9 9
- 1 1 1 变成 0 0 0
- 2 2 2 变成 1 1 1
- 3 3 3 变成 2 2 2
- 4 4 4 变成 3 3 3
- 5 5 5 变成 4 4 4
- 6 6 6 变成 5 5 5
- 7 7 7 变成 6 6 6
- 8 8 8 变成 7 7 7
- 9 9 9 变成 8 8 8
所以:
- 0 0 0 变成 9 9 9
- 2 2 2 变成 1 1 1
- 0 0 0 变成 9 9 9
- 3 3 3 变成 2 2 2
- 4 4 4 变成 3 3 3
- 1 1 1 变成 0 0 0
- 9 9 9 变成 8 8 8
最后得到:
9 1 9 2 3 0 8 9 \ 1 \ 9 \ 2 \ 3 \ 0 \ 8 9 1 9 2 3 0 8
数据范围
需要加密的数字个数不超过 20000 20000 20000 个,且均为 0 0 0 到 9 9 9;密码本中的数字不重复,且均为 0 0 0 到 9 9 9。
思路分析
本题核心是查表映射。
- 输入一个整数
n,表示需要加密的数字个数。 - 读取
n个数字(每个都是 0~9),存入数组a。 - 读取 10 个数字作为密码本,存入数组
p,其中p[i]表示数字i加密后的结果。 - 对每个原始数字
a[i],将其替换为p[a[i]]并输出。
复杂度:时间 O(n),空间 O(n)(存储原始数字,n≤20000)。
代码实现
#include<bits/stdc++.h>
using namespace std;
int n,a[20010]; //原始序列
int p[10]; // 密码本
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i]; // 读入原始序列
for(int i=0;i<=9;i++) cin>>p[i]; // p[i]表示i变成什么
for(int i=1;i<=n;i++){ // 遍历每个原始数字
cout<<p[a[i]]<<" "; // 输出加密后的数字
}
return 0;
}
功能分析
- 输入处理:使用
cin连续读取,忽略空白符,正确获取全部数据。 - 映射存储:密码本数组
p下标对应原数字,值对应加密后数字,映射关系清晰。 - 输出转换:依次通过
p[a[i]]得到新数字并输出。
各种学习资料,助力大家一站式学习和提升!!!
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"########## 一站式掌握信奥赛知识! ##########";
cout<<"############# 冲刺信奥赛拿奖! #############";
cout<<"###### 课程购买后永久学习,不受限制! ######";
return 0;
}
【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转
https://edu.csdn.net/course/detail/41081 点击跳转
3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}

更多推荐
所有评论(0)