大佬们看一下,卡在60分

P1914 小书童——凯撒密码

lanqinglian @ 2019-02-19 15:13:57

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

by aminoas @ 2019-02-19 15:27:02

用+n会爆汉字码,要用-n。

@lanqinglian

我不是大佬


by pigstd @ 2019-02-19 15:29:52

是的


by lanqinglian @ 2019-02-19 15:35:03

@2018J1605

谢谢!这是AC代码

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

但为什么+n不行,道理不是一样吗


by aminoas @ 2019-02-19 15:41:35

汉字码会爆掉(指输出汉字,不是Runtime Error)

@lanqinglian


by lanqinglian @ 2019-02-19 15:49:26

@2018J1605

是不是不能超过ascii表上的?也就是最大127?


by aminoas @ 2019-02-19 15:55:53

@lanqinglian是的,不然会输出类似“噜噜噜噜噜噜噜噜噜噜噜噜”一类的东西...(滑稽)


by lanqinglian @ 2019-02-19 19:12:28

@2018J1605

好的,谢谢


|