##34 过不去 求助

P1914 小书童——凯撒密码

Eternity_fantasy @ 2022-07-21 14:54:03


#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
    int n;
    cin>>n;
    string a;
    cin>>a;
    for(int i=0;i<a.size();i++){
        a[i]+=n;
        if(a[i]>'z'){
            a[i]=a[i]-26+1;
        }
    }
    for(int i=0;i<a.size();i++){
        cout<<a[i];
    }

}

by xiexie1234 @ 2022-07-21 15:22:54

我的代码你看一下


#include<iostream>
#include<string>
using namespace std;
string s;
int main(){
    int n;
    cin>>n;
    cin>>s;
    for(int i=0;i<s.size();++i){
        for(int j=1;j<=n;++j){
            s[i]++;
            if(s[i]>'z'){
                s[i]='a';
            }
        }
    }
    cout<<s;
    return 0;
}

by lonely_star @ 2022-07-30 19:27:44

要记得先判断再加数,否则会直接超 z无论加多少都是错的,所以一定要先减,先将n%26算出最小值,再加上n(我用了减(14行可以改成a[i]=a[i]-26+n也是是可以的))

#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int main(){
    int n;
    cin>>n;
    string a;
    cin>>a;
    n=n%26;
    for(int i=0;i<a.size();i++){
        if(a[i]+n>'z'){
            a[i]=a[i]-(26-n);
        }else{
            a[i]+=n;
        }
    }
    cout<<a;
}

by lonely_star @ 2022-07-30 19:29:16

@xingyunshuo 注意要输出a而不是一个一个输出(数据太大容易超时)


|