为什么第四个测试点错了,有哪位大佬知道?

P1914 小书童——凯撒密码

LiXinLong_LXL @ 2024-05-05 15:18:53

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    string a;
    cin>>n>>a;
    n%=26; 
    for(int i=0;i<a.size();i++){
        a[i]+=n;
        if(a[i]>'z'){
            a[i]-=26;
        }
        cout<<a[i];
    }
    return 0;
}

by carbon_monoxide @ 2024-05-05 15:25:31

有没有一种可能,char最长127,加的时候炸了?


by LYRT_Subway @ 2024-05-05 15:27:59

```cpp a[i]>'z' or a[i]<'a' ```

by LiXinLong_LXL @ 2024-05-05 15:30:42

@carbon_monoxide 不可能吧,n小于等于26,字符串长度小于等于50。


by carbon_monoxide @ 2024-05-05 15:32:27

@LiXinLong_LXL 我是说,char存的最大字符的ASCII码是127,万一来个z+6不就炸了?


by LYRT_Subway @ 2024-05-05 15:33:23

@LiXinLong_LXL 因为有可能 'z'+25 之后就超出char的最大值127然后char就变成了负数 所以如果小于'a'也要减回26


by LiXinLong_LXL @ 2024-05-05 15:33:52

@LYRT_Subway AC了,感谢大佬!


by LiXinLong_LXL @ 2024-05-05 15:36:20

@carbon_monoxide && @LYRT_Subway 明白了。 感谢大佬指导!!!


by yyq0219 @ 2024-05-10 21:47:49

@LYRT_Subway 如果小于'a'还是小写字母吗


by LYRT_Subway @ 2024-05-10 21:56:43

@yyq0219 建议你看别的大佬的讲解 比我这个乱蒙答对的好多了


by yyq0219 @ 2024-05-11 20:16:39

@LYRT_Subway 好滴,谢谢!


|