自测过了,提交40分

P1914 小书童——凯撒密码

潇潇暮雨寒z @ 2021-10-10 22:05:14

为什么在本地测是对的,交上去只有40分?

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

by wanggk @ 2021-10-10 22:13:05

  1. 循环的那行改为:

    for(int i=0;i<len;i++)

    注意是小于号,不是小于等于

  2. 中间一定要用 else if,不然假设第一个 if 满足了,第三个 if 还会再成立一次,就不对了。改为:

    if(a[i]+n>'z'){
    a[i]+=n;
    a[i]-=26;
    }
    else if(a[i]+n<'a'){
    a[i]+=n;
    a[i]+=26;
    }
    else if(a[i]+n<='z'&&a[i]+n>='a'){
    a[i]+=n;
    } 

by wanggk @ 2021-10-10 22:13:54

@潇潇暮雨寒z 这样应该能对,格式丑见谅


by 潇潇暮雨寒z @ 2021-10-12 20:56:26

@wanggk王冠龛 已经改过了,还是40分欸


by 潇潇暮雨寒z @ 2021-10-12 21:57:24

现在发现开了O2就能AC,不开O2三个RE两个AC


by wanggk @ 2021-10-13 20:48:23

@潇潇暮雨寒z 神奇的O₂啊

话说是不是a[i]+=n;加完超了的关系(蒟蒻盲猜)


|