YYAN_ZU @ 2024-05-25 22:58:41
#include<iostream>
#include<cstring>
using namespace std;
int b[100];
int main()
{
int n;
cin>>n;
string a;
cin>>a;
int x=a.size();
for(int i=0;i<x;i++){
b[i]=a[i]-a[i-1];
b[i]+=n;
}
for(int i=0;i<x;i++){
b[i]+=b[i-1];
printf("%c",b[i]);
}
return 0;
}
by zhang8031 @ 2024-05-25 23:04:49
能
by zhang8031 @ 2024-05-25 23:14:35
第一:你的代码 当z的时候,应该是n+=97(ASCII码)你是{123(ASCII码)
你应该加个判断
if(a[i]=='z'){
b[i]='a'+n;
}
最后转换一下;
第二:你应该和97(a(ASCII))比;
by zhang8031 @ 2024-05-25 23:15:49
我自己写的是
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
int n;
cin >> n;
cin >> s;
for(int i=0;i<s.size();i++){
for(int j=1;j<=n;j++){
++s[i];
if(s[i]>'z'){
s[i]='a';
}
}
}
cout << s;
return 0;
}
by YYAN_ZU @ 2024-05-25 23:30:55
@zhang8031 大佬我刚才优化了一下,感觉可以跑了,但还是和差分的模板不太一样,这是为啥啊
#include<iostream>
#include<cstring>
using namespace std;
int b[100];
int main()
{
int n;
cin>>n;
string a;
cin>>a;
int x=a.size();
for(int i=0;i<x;i++){
b[i]=a[i]-a[i-1];
if(i==0){
b[0]+=n;
}
}
for(int i=0;i<x;i++){
b[i]+=b[i-1];
printf("%c",b[i]);
}
return 0;
} #include<iostream>
#include<cstring>
using namespace std;
int b[100];
int main()
{
int n;
cin>>n;
string a;
cin>>a;
int x=a.size();
for(int i=0;i<x;i++){
b[i]=a[i]-a[i-1];
if(i==0){
b[0]+=n;
}
}
for(int i=0;i<x;i++){
b[i]+=b[i-1];
printf("%c",b[i]);
}
return 0;
}
by zhang8031 @ 2024-05-25 23:49:08
@YYAN_ZU
因为差分对于这道题不太适合
你要练差分的去P1083,P1438,P1438这一些时候差分
by Fractured_Angel @ 2024-05-26 06:10:14
没必要,太水了
by YYAN_ZU @ 2024-05-26 10:26:56
@zhang8031 好的,感谢大佬!!!