zxf1019 @ 2022-03-18 15:20:39
#include<iostream>
using namespace std;
#include<string>
int main() {
int a;
cin>>a;
string s;
cin>>s;
a=a%26;
for(int i=0;i<s.size();i++){
s[i]=s[i]+a;
if(s[i]>'z') s[i]=s[i]-26;
}
cout<<s;
}
by zxy123bc @ 2022-03-18 15:48:58
@zxf1019
'z'+26>127
char越界了
by ayshudh @ 2022-03-20 08:51:40
用string呢?
by zxf1019 @ 2022-03-20 16:15:54
@zxy123bc 那应该怎么修正?
by zxy123bc @ 2022-03-20 16:26:52
@zxf1019
我的思路就是不直接加,用个for加 超过了就减掉26
缺点:慢,不过这个题数据小
题解里是说取余26也是一种思路 我觉得他那个好一点(他那个快),可以去题解里学学
我的代码:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int n=0,len=0;
char a[60];
cin>>n;
cin>>a;
len=strlen(a);
for (int i=0;i<len;i++){
for (int j=0;j<n;j++){//就是这里,for代替加法
a[i]++;
if(a[i]>'z')
a[i]-=26;
}
}
for (int i=0;i<len;i++){
cout<<a[i];}
}
by zxy123bc @ 2022-03-20 16:28:34
@ayshudh
他用的就是string
string和char数组差不多
char爆的string基本都会爆