吴易璐
(我尊嘟很爱奥数欸(emo版)
1
此为题面
BJ. 恺撒加密术
Problem ID: 8238
Contest ID: 5697
必做题
Wrong Answer
时间限制:0.2内存限制:32M
专题说明:
在古罗马,“高卢战争”描述了凯撒使用加密来传递信息,即所谓的“凯撒加密”,这是一种替代加密。消息中的每个字母都被其后面的第t个字母替换。例如,当t=4时,加密规则是用原始字母后的第4个字母替换原始字母, 字母“A”后的第四个字母是“E”,而“A”被“E”取代,字母“z”后的第四个字母是“d”,而“z”被“d”取代。因此,“China”将被翻译成“Glmre”。请编写一个程序来加密输入的字符串,方法是将每个字母替换为后面的第t个字母。
输入格式:输入一个字符串并输入t
输出格式:标题中描述了输出格式。
示例输入1:
china 4
样本输出1:
glmre
示例输入2:
antDZYO 30
样本输出2:
erxHDCS
规定:
输入的字符串长度不超过100,只包含小写字母和大写字母。t<=260
此为代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n;
char a[101];
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>t;
for(int j=1;j<=n;j++){
int a=(int)j+4;
cout<<(char)a;
}
return 0;
}
1 个赞
马铭煜
(马铭煜)
3
#include<bits/stdc++.h>
using namespace std;
int k;
string n;
int main(){
cin>>n>>k;
for(int i=0;i<n.size();i++){
if(n[i]>='a'&&n[i]<='z'){
if('z'-n[i]<k%26){
cout<<char(n[i]+k%26-26);
}else{
cout<<char(n[i]+k%26);
}
}else if(n[i]>='A'&&n[i]<='Z'){
if('Z'-n[i]<k%26){
cout<<char(n[i]+k%26-26);
}else{
cout<<char(n[i]+k%26);
}
}
}
return 0;
}
有用的话,给个解决方案呗
1 个赞
茅峻溢
(Asriel?)
10
那是后t位,并不是后4位,那只是个例子
还有,你的int可能会超出字母范围,要模以26
1 个赞
茅峻溢
(Asriel?)
12
#include<bits/stdc++.h>
using namespace std;
int t;
string n;//利用字符串,更加直观简洁
int main(){
cin>>n>>t;//输入
for(int i=0;i<n.size();i++){
if(n[i]>='a'&&n[i]<='z'){//判断大小写
cout << (char)((n[i] - 'a' + t) % 26 + 'a');//将char类型转为int类型进行计算后再转回char来输出
}else{
cout << (char)((n[i] - 'A' + t) % 26 + 'A');//同上
}
}
return 0;
}
这个是极简版,给个解决方案呗~~~
1 个赞
csyz14
(彭晨熙)
15
#include<bits/stdc++.h>
using namespace std;
char a[101];
int main(){
int t;
cin>>a;
cin>>t;
for(int i=0;i<101;i++){
if(a[i]>96&&a[i]<123){
for (int j=1;j<=t;j++){
if((int)(a[i])==122){
a[i]=‘a’-1;
}
if((int)a[i]!=0){
(int)a[i]++;
}
}
}else{
for (int j=1;j<=t;j++){
if((int)(a[i])==90){
a[i]=‘A’-1;
}
if((int)a[i]!=0){
(int)a[i]++;
}
}
}
}
cout<<a;
return 0;
}
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1 个赞