这个题的测试数据好像并不强啊,没有考虑n过大的情况??

P1914 小书童——凯撒密码

baccano @ 2018-08-24 01:08:15

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

这是我提交AC的代码。我抱着试一试的态度去提交,但是居然AC了,看来测试数据并不强!显然这个代码没有考虑n过大的情况!!! 输入: 99 zzz 输出: 妹 显然不对!!! 于是进行了如下改进(太晚了可能会有昏迷打错但是也AC了。。自己测试目前也没有问题)

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

输入: 999 zzz 输出: kkk


by baccano @ 2018-08-24 12:51:49

下面的代码最后晚上昏迷了多打了一个}。。。看来最后复制粘贴的时候出现了问题,测试提交的时候并没有


|