逆游的懒喵喵 @ 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];
}
}
}