80分求助!!

P1914 小书童——凯撒密码

__Misaka_Mikoto_ @ 2023-07-02 21:21:13

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int x;
    cin>>x>>s;
    for(int i=0;i<s.size();i++){
        s[i]+=x%26;
        if(s[i]<'a'||s[i]>'z')
            s[i]%='z',s[i]+=-1+'a';
    }
    cout<<s;
    return 0;
}

反复修改也只有80分,爆了第四个点。


by __Misaka_Mikoto_ @ 2023-07-03 00:39:58

已解决,问题出在数据溢出,附ac代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int x;
    cin>>x>>s;
    for(int i=0;i<s.size();i++){
        int a=s[i];
        a+=x%26;
        if(a>'z')
            a='a'+(a%'z')%26-1;
        s[i]=a;
    }
    cout<<s;
    return 0;
}

A了这道题,祝你们成功(滑稽)


|