题目描述题目要求解码一个简单的字符替换密码。编码方式是对每个可打印ASCII\texttt{ASCII}ASCII字符进行统一的算术变换。从样例可以看出编码字符与解码字符之间相差固定值777。例如输入中的1对应输出中的*ASCII\texttt{ASCII}ASCII码494949和424242差777。因此解码只需将每个字符的ASCII\texttt{ASCII}ASCII码减去777即可。输入格式输入包含若干行每行是一个编码后的字符串。输入以文件结束符EOF\texttt{EOF}EOF终止。输出格式输出解码后的字符串保持原行结构。样例输入1JKJpz{ol\{yhklthyrvm{olJvu{yvsKh{hJyywyh{pvu5 1PITpzh\{yhklthyrvm{olPu{lyuh{pvuhsI|zpulzzThjopulJyywyh{pvu5 1KLJpz{ol\{yhklthyrvm{olKpnp{hsLx|pwtluJyywyh{pvu5输出*CDC is the trademark of the Control Data Corporation. *IBM is a trademark of the International Business Machine Corporation. *DEC is the trademark of the Digital Equipment Corporation.题目分析本题的核心是发现编码与解码之间的映射规律。从样例可以推断每个字符的ASCII\texttt{ASCII}ASCII码减去777即为解码后的字符。因此逐字符读取输入对每个非换行符减去777后输出换行符直接输出。验证输入1ASCII\texttt{ASCII}ASCII494949→ 输出*ASCII\texttt{ASCII}ASCII424242差777。输入JASCII\texttt{ASCII}ASCII747474→ 输出CASCII\texttt{ASCII}ASCII676767差777。输入KASCII\texttt{ASCII}ASCII757575→ 输出DASCII\texttt{ASCII}ASCII686868差777。其他字符同理。实现方法使用cin.unsetf(ios::skipws)禁止跳过空白字符以便读取空格和换行符。逐字符读取遇到换行符输出换行否则输出char(letter - 7)。复杂度分析每个字符处理一次时间复杂度O(L)O(L)O(L)LLL为输入总长度。代码实现// The Decoder// UVa ID: 458// Verdict: Accepted// Submission Date: 2016-07-12// UVa Run Time: 0.010s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);cin.unsetf(ios::skipws);charletter;while(cinletter){if(letter!\n)cout(char)(letter-7);elsecoutletter;}return0;}
UVa 458 The Decoder
发布时间:2026/6/11 18:24:09
题目描述题目要求解码一个简单的字符替换密码。编码方式是对每个可打印ASCII\texttt{ASCII}ASCII字符进行统一的算术变换。从样例可以看出编码字符与解码字符之间相差固定值777。例如输入中的1对应输出中的*ASCII\texttt{ASCII}ASCII码494949和424242差777。因此解码只需将每个字符的ASCII\texttt{ASCII}ASCII码减去777即可。输入格式输入包含若干行每行是一个编码后的字符串。输入以文件结束符EOF\texttt{EOF}EOF终止。输出格式输出解码后的字符串保持原行结构。样例输入1JKJpz{ol\{yhklthyrvm{olJvu{yvsKh{hJyywyh{pvu5 1PITpzh\{yhklthyrvm{olPu{lyuh{pvuhsI|zpulzzThjopulJyywyh{pvu5 1KLJpz{ol\{yhklthyrvm{olKpnp{hsLx|pwtluJyywyh{pvu5输出*CDC is the trademark of the Control Data Corporation. *IBM is a trademark of the International Business Machine Corporation. *DEC is the trademark of the Digital Equipment Corporation.题目分析本题的核心是发现编码与解码之间的映射规律。从样例可以推断每个字符的ASCII\texttt{ASCII}ASCII码减去777即为解码后的字符。因此逐字符读取输入对每个非换行符减去777后输出换行符直接输出。验证输入1ASCII\texttt{ASCII}ASCII494949→ 输出*ASCII\texttt{ASCII}ASCII424242差777。输入JASCII\texttt{ASCII}ASCII747474→ 输出CASCII\texttt{ASCII}ASCII676767差777。输入KASCII\texttt{ASCII}ASCII757575→ 输出DASCII\texttt{ASCII}ASCII686868差777。其他字符同理。实现方法使用cin.unsetf(ios::skipws)禁止跳过空白字符以便读取空格和换行符。逐字符读取遇到换行符输出换行否则输出char(letter - 7)。复杂度分析每个字符处理一次时间复杂度O(L)O(L)O(L)LLL为输入总长度。代码实现// The Decoder// UVa ID: 458// Verdict: Accepted// Submission Date: 2016-07-12// UVa Run Time: 0.010s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);cin.unsetf(ios::skipws);charletter;while(cinletter){if(letter!\n)cout(char)(letter-7);elsecoutletter;}return0;}