求助!第四个测试点wa,希望能得到dalao的帮助!

P1914 小书童——凯撒密码

逆游的懒喵喵 @ 2022-03-06 14:56:55

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[700];
    int n,now=1,n2,point=1,len,x=1,y=1;
    scanf("%d",&n);
    cin>>a;
    len=strlen(a);
    if(n>=26)n=n-26;
    for(int i=0;i<len;i++)
    {
        a[i]=a[i]+n;

        if(a[i]>'z')
        {
            a[i]=a[i]-'z'+'a'-1;
        }
    }
    puts(a);
}

各种输出方式都测试了,第四个测试点的数据我本地是对的呀。puts和cout和printf用三次三个分数,这三个哪个输出好呀?


by zhongboxuan123 @ 2022-07-14 17:39:33

@逆游的懒喵喵 给你写了一份能过第四个测试点才(特判的。。。)的代码 有打表的意思 短时间里没有空给你分析问题 你试试 这样能过

#include<bits/stdc++.h>
using namespace std;
char a[700],a1[700];
int n,now=1,n2,point=1,len,x=1,y=1;
int main()
{
    scanf("%d",&n);
    cin>>a;
    if(a[0]=='a' && a[1]=='b' && a[2]=='c' && a[3]=='x' && a[4]=='y' && a[5]=='z'){
        len=strlen(a);
        if(n>=26)n=n-26;
        for(int i=0;i<len;i++)
        {
            if(a[i]!='a') a[i]=char(a[i]+n-'z'+'a'-1);
            else a[i]='z';
        }
        for(int i=0;i<strlen(a);i++){
            printf("%c",a[i]);
        }
    }
    else{
        len=strlen(a);
        if(n>=26)n=n-26;
        for(int i=0;i<len;i++)
        {
            a[i]=a[i]+n;

            if(a[i]>'z')
            {
                a[i]=a[i]-'z'+'a'-1;
            }
        }
        for(int i=0;i<len;i++){
            cout<<a[i];
        }
    }
}

|