公式: x[i] = 'a'+(x[i]-'a'+n)%26
凯撒密码
#include <iostream>
using namespace std;
int main(){
string x;
int n;
cin>>x>>n;
for(int i=0;i<x.size();i++)
{
x[i] = 'a'+(x[i]-'a'+n)%26;
}
cout<<x<<"\n";
return 0;
}
#include <iostream>
using namespace std;
typedef long long ll;
const int N = 2e5+10;
ll d[N];
int main(){
int n,m; cin>>n>>m;
string str; cin>>str;
while(m--) //处理差分数组 差分模板
{
ll l,r,k; cin>>l>>r>>k;
k%=26;
d[l-1]+=k; // str字符串下标是从0开始 所以 l-1 为起始位置
d[r]-=k; // r 同理
}
for(int i=1;i<=n;i++)
{
d[i]+=d[i-1]; //处理前缀和数组
}
for(int i=0;i<n;i++)
{
str[i] = 'a'+(str[i]-'a'+d[i])%26; // 套公式 'a'+(str[i]-'a'+d[i])%26 凯撒密码
}
cout<<str<<"\n";
return 0;
}