1387. 简单加密
问题描述
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后 55 位对应的字符来代替,这样就得到了密文。比如字符 A 用 F 来代替。如下是密文和明文中字符的对应关系。
密文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;
明文:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U;
你的任务是对给定的密文进行解密得到明文。
你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。
输入
一行,给出密文,密文不为空,而且其中的字符数不超过 200200 。
输出
输出一行,即密文对应的明文。
样例
输入
复制
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
输出
复制
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
#1解法
#include<iostream>
using namespace std;
int main()
{
char c[210];
cin.getline(c, 210);
for(int i = 0; c[i]; i++)
{
if(c[i] >= 'A' && c[i] <= 'Z')
{
c[i] = (c[i] - 'A' - 5 + 26) % 26 + 'A';
}
}
cout << c;
return 0;
}
#2题解:
#include <bits/stdc++.h>
using namespace std;
int main() {
string a;
getline(cin,a);
for (int i=0; a[i] != '\0'; i++) {
if (a[i]>='F' && a[i]<='Z') {
a[i] = a[i]-5;
}else if (a[i]>='A' && a[i]<='E') {
a[i] = a[i]+21;
}
cout<<a[i];
}
return 0;
}
#3题解:
#include <bits/stdc++.h>
using namespace std;
/*
1.将大写字母解密
2.解密方法
F~Z,解密方法是:-5
A~E,对应V~Z
*/
string s;
int main() {
getline(cin,s);
//逐个解密
for(int i = 0;i < s.size();i++){
//如果是大写字母
if(s[i] >= 'A' && s[i] <= 'Z'){
//解密
if(s[i] >= 'F' && s[i] <= 'Z'){
s[i] = s[i] - 5;
} else if(s[i] == 'A'){
s[i] = 'V';
} else if(s[i] == 'B'){
s[i] = 'W';
} else if(s[i] == 'C'){
s[i] = 'X';
} else if(s[i] == 'D'){
s[i] = 'Y';
} else if(s[i] == 'E'){
s[i] = 'Z';
}
}
}
cout<<s;
return 0;
}
'A'~'E',解密为'V'~'Z',也可以直接加上差值。
#include<bits/stdc++.h>
using namespace std;
string s;
int main() {
getline(cin,s);
for(int i = 0;i < s.size();i++){
//如果是大写字母,则解密
if(s[i] >= 'F' && s[i] <= 'Z'){
s[i] = s[i] - 5;
}else if(s[i] >= 'A' && s[i] <= 'E'){
s[i] = s[i] + ('V' - 'A');
}
}
cout<<s;
return 0;
}
1480. 找字典码最小的字符串
问题描述
编写程序,针对输入的 𝑁N 个不同的字符串,输出其中字典码最小的字符串。
输入
输入第一行给出正整数 𝑁N ;
随后 𝑁N 行,每行给出一个长度小于 8080 的非空字符串,其中不会出现换行符,空格,制表符。
输出
输出字典码最小的字符串。
样例
输入
复制
5 Li Wang Zha Jin Xian
输出
复制
Jin
#include <bits/stdc++.h>
using namespace std;
int main(){
//s:代表字典码最小的字符串,x:代表运算结果
string mi,x;
int n,i;
cin>>n;
//先读入一个字符串,作为被比较的对象
//假设它是字典码最小的字符串
cin>>mi;
//再次读入n-1个字符串,并逐个和mi比较(打擂台)
for(i = 2;i <= n;i++){
cin>>x;
if(x < mi){
mi = x;
}
}
cout<<mi;
}
#2解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string mi,x;
int n;
cin>>n;
cin>>mi;
for(int i=2;i<=n;i++)
{
cin>>x;
if(x<mi)
{
mi=x;
}
}
cout<<mi;
}