惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Help Net Security
Help Net Security
P
Privacy International News Feed
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
AWS News Blog
AWS News Blog
K
Kaspersky official blog
A
Arctic Wolf
Latest news
Latest news
T
Threat Research - Cisco Blogs
L
LINUX DO - 最新话题
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
月光博客
月光博客
N
News and Events Feed by Topic
Jina AI
Jina AI
博客园 - 司徒正美
WordPress大学
WordPress大学
罗磊的独立博客
雷峰网
雷峰网
AI
AI
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Security @ Cisco Blogs
博客园 - 三生石上(FineUI控件)
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cisco Blogs
博客园 - 【当耐特】
The Hacker News
The Hacker News
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Schneier on Security
Schneier on Security
博客园 - Franky
S
SegmentFault 最新的问题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cloudbric
Cloudbric
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
Last Week in AI
Last Week in AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Know Your Adversary
Know Your Adversary
Google DeepMind News
Google DeepMind News

OneCoder

【GESP】C++六级练习 luogu-B2174, 完全背包 【NOIP】2005真题解析 luogu-P1048 采药(适合GESP六级以上练习) 【GESP】C++六级真题 luogu-P17013, [GESP202606 六级] 满二叉树 【GESP】C++六级真题 luogu-P17012, [GESP202606 六级] 条形蛋糕 【GESP】C++五级真题 luogu-P17011 [GESP202606 五级] 晚宴 【GESP】C++五级真题 luogu-P17010 [GESP202606 五级] 排排坐 【GESP】C++四级真题 luogu-B4558 [GESP202606 四级] 身高体重指数 【GESP】C++四级真题 luogu-B4557 [GESP202606 四级] 扫雷 【GESP】C++三级真题 luogu-B4556 [GESP202606 三级] 字符转换 【GESP】C++二级真题 luogu-B4554 [GESP202606 二级] 菱形 【GESP】C++二级真题 luogu-B4553 [GESP202606 二级] 完全平方数计数 【GESP】C++一级真题 luogu-B4551 [GESP202606 一级] 去旅行 【GESP】C++一级真题 luogu-B4552 [GESP202606 一级] 交税 【NOIP】2000真题解析 luogu-P1023 税收与补贴问题(适合GESP四、五级以上练习) 【NOIP】2000真题解析 luogu-P1022 计算器的改良(适合GESP四、五级以上练习) 【NOIP】2001真题解析 luogu-P1029 最大公约数和最小公倍数问题 【CSP】CSP-X 2018真题 11的倍数 luogu-B4075 (适合GESP三级及以上考生练习) 【CSP】CSP-X 2018真题 统计成绩 luogu-B4074 (适合GESP二级及以上考生练习) 【CSP】CSP-X 2018真题 快递费用 luogu-B4073 (适合GESP二级及以上考生练习) 【CSP】CSP-X 2018真题 小明的照片 luogu-B4072 (适合GESP一级及以上考生练习) 【GESP】C++四级练习 luogu-P1138 第 k 小整数 【NOIP】2008真题解析 luogu-P1125 笨小猴 【信奥业余科普】C++ 的奇妙之旅 29:别让 TLE 和 MLE 偷走你的分——复杂度估算与数据范围速查 【信奥业余科普】C++ 的奇妙之旅 28:规范比赛代码的钥匙——文件操作与输入输出重定向(freopen) 【CSP】CSP-J 2023真题 公路 luogu-P9749 (适合GESP四级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 27:高效处理数据的利器——常用算法库(algorithm) 【CSP】CSP-J 2022真题 解密 luogu-P8814 (适合GESP四级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 26:高效的键值对——映射(map)与多重映射(multimap) 【CSP】CSP-J 2022真题 乘方 luogu-P8813 (适合GESP二级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 25:自动排序的利器——集合(set)与多重集合(multiset) 【CSP】CSP-J 2019真题 纪念品 luogu-P5662 (适合GESP六级及以上考生练习) 【信奥业余科普】C++ 的奇妙之旅 24:拆解 deque——分段连续的双端队列 【信奥业余科普】C++ 的奇妙之旅 23:主动限制的艺术——栈(stack)与队列(queue)
【GESP】C++三级真题 luogu-B4555 [GESP202606 三级] 加密
OneCoder · 2026-07-02 · via OneCoder

GESP C++三级,2026年6月真题,数组映射,难度⭐,洛谷难度入门

luogu-B4555 [GESP202606 三级] 加密

题目要求

题目描述

小杨同学有一串数字,想把它们变成另一串数字,这个过程叫做加密

他有一本密码本,密码本告诉你:每个数字应该变成哪个数字。

数字一共有 $10$ 个:$0$、$1$、$2$、$3$、$4$、$5$、$6$、$7$、$8$、$9$。

密码本会依次告诉你:$0$ 要变成什么,$1$ 要变成什么,……,$9$ 要变成什么。

请你按照密码本,把原来的每个数字都换成新的数字,然后输出。

输入格式

输入共有 $3$ 行。

第一行:一个整数,表示有多少个数字需要加密;

第二行:这些需要加密的数字;

第三行:密码本,一共 $10$ 个数字。第 $1$ 个数字表示 $0$ 加密后变成什么,第 $2$ 个数字表示 $1$ 加密后变成什么,……,第 $10$ 个数字表示 $9$ 加密后变成什么。

输出格式

输出加密后的数字,即把输入第二行里的每个数字,都按照密码本替换后输出。

输入输出样例 #1

输入 #1

1
2
3
7
0 2 0 3 4 1 9
9 0 1 2 3 4 5 6 7 8

输出 #1

说明/提示

密码本 $9\ 0\ 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8$ 的含义为:$0 \to 9$,$1 \to 0$,$2 \to 1$,$3 \to 2$,$4 \to 3$,$5 \to 4$,$6 \to 5$,$7 \to 6$,$8 \to 7$,$9 \to 8$。

因此原数字 $0\ 2\ 0\ 3\ 4\ 1\ 9$ 加密后为 $9\ 1\ 9\ 2\ 3\ 0\ 8$。

数据范围

需要加密的数字个数不超过 $20000$ 个,且均为 $0$ 到 $9$;密码本中的数字不重复,且均为 $0$ 到 $9$。


题目分析

解题思路

本题的解题思路如下:

  1. 问题本质:
    • 给定一个长度为 $10$ 的数组作为密码本,其中 map[i] 表示数字 $i$ 加密后对应的数字
    • 对输入的每个数字,查表替换后输出
  2. 解题关键 — 数组下标映射:
    • 用一个大小为 $10$ 的数组 map[0..9] 存储密码本
    • 读入密码本后,map[i] 即为数字 $i$ 加密后的结果
    • 对于每个待加密的数字 $x$,直接输出 map[x] 即可
  3. 复杂度分析:
    • 时间复杂度:$O(n)$,其中 $n$ 为待加密的数字个数,每个数字只需一次数组查表
    • 空间复杂度:$O(1)$,只需一个大小为 $10$ 的数组

示例代码

方法一、数组映射

利用数组下标天然对应数字 $0$ 到 $9$ 的特性,直接建立映射表并逐个替换输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>

int main() {
    // 读入待加密的数字个数
    int n;
    std::cin >> n;
    // 读入待加密的数字,存入数组
    int a[20000];
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }
    // 读入密码本,map[i] 表示数字 i 加密后变成 map[i]
    int map[10];
    for (int i = 0; i < 10; i++) {
        std::cin >> map[i];
    }
    // 逐个替换并输出
    for (int i = 0; i < n; i++) {
        // 通过数组下标直接查表得到加密后的数字
        std::cout << map[a[i]];
        // 数字之间用空格分隔
        if (i < n - 1) {
            std::cout << " ";
        }
    }
    std::cout << std::endl;
    return 0;
}

方法二、边读边输出

无需额外数组存储待加密数字,读一个就立即查表输出,节省空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>

int main() {
    // 读入待加密的数字个数
    int n;
    std::cin >> n;
    // 先读入所有待加密数字,但这里选择先跳过,后面边读边处理
    // 由于输入顺序是先数字后密码本,需要先存储待加密数字
    int a[20000];
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }
    // 读入密码本
    int map[10];
    for (int i = 0; i < 10; i++) {
        std::cin >> map[i];
    }
    // 遍历待加密数字,逐个查表输出
    for (int i = 0; i < n; i++) {
        if (i > 0) {
            std::cout << " ";
        }
        std::cout << map[a[i]];
    }
    std::cout << std::endl;
    return 0;
}


所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP 学习专题站:GESP WIKI

"luogu-"系列题目可在洛谷题库进行在线评测。

"bcqm-"系列题目可在编程启蒙题库进行在线评测。

欢迎加入Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答

欢迎加入C++ GESP/CSP认证学习QQ频道,考试资源总结汇总

欢迎加入C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号

GESP/CSP 认证学习微信公众号