题解(内含思路)
2026-09-02 22:06:38
发布于:安徽
17阅读
0回复
0点赞
这道题的思路
第一行包含一个字符串,表示已破解的凯撒密码明文;
第二行包含一个字符串,表示已破解的凯撒密码密文;
第三行包含一个字符串,表示待破解的凯撒密码密文。
我们假设第一行第二行和第三行分别是a,b,c。
我们用a[0]-b[0]求出偏移量用变量存下来(注意要特判)
if(______){//特判,看a[0]会不会>b[0]
t=int(b[0]-a[0]);
}
else{
t=int(b[0]-(a[0]-26));
}//防止直接复制写的伪代码
求出偏移量就该在待破解的凯撒密码密文减去偏移量
for(int i=0;i<c.length();i++){
if(______){//特判,看减去偏移量后会不会越界
s=_______;//求出减去偏移量后的字母ASCII值
}
else{
s=______;// 求出减去偏移量后的字母ASCII值
}
if(char(s)>'Z'){//特判
cout<<char(______);//输出
}
else{
cout<<char(_____);//输出
}//防止直接复制写的伪代码
完整代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b,c;
int t,s;
cin>>a>>b>>c;
if(______){//特判,看a[0]会不会>b[0]
t=int(b[0]-a[0]);
}
else{
t=int(b[0]-(a[0]-26));
}
for(int i=0;i<c.length();i++){
if(______){//特判,看减去偏移量后会不会越界
s=_______;//求出减去偏移量后的字母ASCII值
}
else{
s=______;// 求出减去偏移量后的字母ASCII值
}
if(char(s)>'Z'){//特判
cout<<char(______);//输出
}
else{
cout<<char(_____);//输出
}
}
}//防止直接复制写的伪代码
完整代码(填完的)(不准直接复制)(给不知道怎么填的提示)
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b,c;
int t,s;
cin>>a>>b>>c;
if(b[0]-a[0]>0){
t=int(b[0]-a[0]);
}
else{
t=int(b[0]-(a[0]-26));
}
for(int i=0;i<c.length();i++){
if(int(c[i])-t<'A'){
s=int(c[i])-t+26;
}
else{
s=int(c[i])-t;
}
if(char(s)>'Z'){
cout<<char(s-26);
}
else{
cout<<char(s);
}
}
}
//点赞互关
//点赞互关
//点赞互关
//点赞互关
//点赞互关
//点赞互关
这里空空如也








有帮助,赞一个