UOJ Logo Universal Online Judge

UOJ

#524. 【美团杯2020】程序解密

附件下载 统计

今天晚上有程序设计课的DDL,但是蒜斜的程设作业还一个空格都没有打过 —— 因为他的魔塔还没有通关……于是蒜斜打算向他的好朋友镁团求助。

镁团很愿意帮忙,所以他将自己的两个程序 small.cpplarge.cpp 用以下方式加密后发给了蒜斜:

  1. 读入原程序中的所有字符,包括空格与换行。这样就得到了一个字符串 s
  2. s 中的每一个字符都替换成它的 ASCII 码,这样就得到了一个数字序列 A
  3. 随机生成一个 0255 的排列 p,并把所有的 Ai 替换成 p[Ai],这样就得到了数字数列 B
  4. B 输出到密文文件中。

现在给出这两个程序的加密结果 small.encode, large.encode。你需要帮助蒜斜还原出这两个程序原本的功能,以帮助他完成作业。

为了帮助你解密,蒜斜还额外提供了作业里的样例输入输出 small.in, small.out, large.in, large.out

  1. 已知 small.cpp 在输入 small.in 的时候会输出 small.out
  2. 已知 large.cpp 在输入 large.in 的时候会输出 large.out

提交方式

你提交的程序需要把 small.cpplarge.cpp 合并到一起:输入的第一行包含一个整数 t{1,2},当 t=1 的时候,你的程序需要执行 small.cpp 的功能;当 t=2 的时候,你的程序需要执行 large.cpp 的功能。

样例输入一

input

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

output

221

样例输入二

见样例数据下载。

限制与约定

Small Task: t=1

Large Task: t=2

时间限制:1s

空间限制:512MB

下载

加密后的程序以及运行样例下载