CF219C题解
还是很好弄滴 解释在代码里
#include<bits/stdc++.h>
using namespace std;
string s;
long n,k;
char adg;
bool panduan[100000];
long temp[100000];
long baoliu[100000];
long ans;
char ch[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int main()
{
cin>>n>>k;
cin>>s;
for(int i=0;i<n;i++)//字母转数字
{
temp[i]=s[i]-'A'+1;
baoliu[i]=s[i]-'A'+1;
}
if(k==2)//特判2
{
for(int i=0;i<n;i++)
{
if(temp[i]==1&&temp[i+2]==1)
{
temp[i+1]=2;
}
if(temp[i]==2&&temp[i]==2)
{
temp[i+1]=1;
}
if(temp[i]==1&&temp[i+1]==1)
{
temp[i]=2;
}
if(temp[i]==2&&temp[i+1]==2)
{
temp[i]=1;
}
if(temp[i]==2&&temp[i+1]==1&&temp[i+2]==1)
{
temp[i+2]=2;
}
if(temp[i]==1&&temp[i+1]==2&&temp[i+2]==2)
{
temp[i+2]=1;
}
}
}
else{ //k不等于2
for(int i=1;i<n;i++)
{
for(int j=0;j<k;j++)
{
if(temp[i-1]==temp[i])
{
temp[i]++;
if(temp[i]>k)
{
temp[i]-=k;
}
}
}
}
}
for(int i=0;i<n;i++)//统计改变数量
{
if(temp[i]!=baoliu[i])
{
ans++;
}
}
cout<<ans<<endl;//输出
for(int i=0;i<n;i++)
{
cout<<ch[temp[i]-1];
}
return 0;
}