求助站外题
  • 板块灌水区
  • 楼主Literally
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/7/20 23:27
  • 上次更新2023/11/3 08:32:37
查看原帖
求助站外题
638141
Literally楼主2023/7/20 23:27

考场上做了0分,可能有睿智错误

解密
ROT13是一种简易的替换式密码。
字母表上共有26个字母,使用ROT13时,我们将字符替换为其向后数第13个字符,如果超过Z则再次回到字母表开头。对于数字和其它字符,ROT13并不会对其进行处理。
当然,我们也可以选择其他数字作为偏移量替换,如恺撒在加密时使用偏移量为3的加密方式,将 A替换为D,B替换为E。
在进行了加密后,小华觉得还不够安全,因此,他想让你帮他计算经过k次加密之后的字符串是什么。
数据范围
对于前10%的数据,k = 1
对于前30%的数据,∣s∣ <= 200对于另20%的数据,s只包含小写字母
对于另20%的数据, p = 13
对于100%的数据,∣s∣ <= 106 , 0 ≤ k ≤ 105 , 1 ≤ p ≤ 25

#include <bits/stdc++.h>
using namespace std;
string s;
int k,p;
int main(){
	cin>>s;
    cin>>k>>p;
    for(int i=1;i<=k;i++){
        for(int j=0;j<s.length();j++){
            if(s[j]>='A' && s[j]<='Z'){
                s[j]+=p;
                if(s[j]>='Z'){
                    s[j]-=26;
                }
            }
            if(s[j]>='a' && s[j]<='z'){
                s[j]+=p;
                if(s[j]>='z'){
                    s[j]-=26;
                }
            }
        }
    }
    cout<<s;
}
		
2023/7/20 23:27
加载中...