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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
S
Security @ Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
A
Arctic Wolf
Webroot Blog
Webroot Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Security Latest
Security Latest
H
Heimdal Security Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
T
Tor Project blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
A
About on SuperTechFans
M
MIT News - Artificial intelligence
V
V2EX
V
Visual Studio Blog
Recorded Future
Recorded Future
博客园 - 叶小钗
F
Fortinet All Blogs
L
Lohrmann on Cybersecurity
The GitHub Blog
The GitHub Blog
博客园 - Franky
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
I
InfoQ
SecWiki News
SecWiki News
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
B
Blog RSS Feed
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
H
Help Net Security

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 认证学习微信公众号