#UOJP524. 【美团杯2020】程序解密
【美团杯2020】程序解密
今天晚上有程序设计课的DDL,但是蒜斜的程设作业还一个空格都没有打过 —— 因为他的魔塔还没有通关……于是蒜斜打算向他的好朋友镁团求助。
镁团很愿意帮忙,所以他将自己的两个程序 small.cpp 和 large.cpp 用以下方式加密后发给了蒜斜:
- 读入原程序中的所有字符,包括空格与换行。这样就得到了一个字符串 $s$。
- 把 $s$ 中的每一个字符都替换成它的 ASCII 码,这样就得到了一个数字序列 $A$。
- 随机生成一个 $0 \sim 255$ 的排列 $p$,并把所有的 $A_i$ 替换成 $p[A_i]$,这样就得到了数字数列 $B$。
- 把 $B$ 输出到密文文件中。
现在给出这两个程序的加密结果 small.encode, large.encode。你需要帮助蒜斜还原出这两个程序原本的功能,以帮助他完成作业。
为了帮助你解密,蒜斜还额外提供了作业里的样例输入输出 small.in, small.out, large.in, large.out:
- 已知
small.cpp在输入small.in的时候会输出small.out。 - 已知
large.cpp在输入large.in的时候会输出large.out。
提交方式
你提交的程序需要把 small.cpp 与 large.cpp 合并到一起:输入的第一行包含一个整数 $t \in \{1,2\}$,当 $t=1$ 的时候,你的程序需要执行 small.cpp 的功能;当 $t=2$ 的时候,你的程序需要执行 large.cpp 的功能。
1
10
1 10 7 6 2 8 9 3 5 4
221
样例输入二
见样例数据下载。
限制与约定
Small Task: $t = 1$。
Large Task: $t = 2$。
时间限制:$1\texttt{s}$
空间限制:$512\texttt{MB}$
