Files
OI-source/history_source/ccf 基础篇/U2/2.4.3.cpp
2023-08-03 09:22:52 +08:00

63 lines
944 B
C++

#include<iostream>
#include<string>
#include<vector>
using namespace std;
void turn(string &sr)
{
char li;
for(int i=0,j=sr.size()-1;i<j;i++,j--)
{
li=sr[i];
sr[i]=sr[j];
sr[j]=li;
}
}
int main()
{
string sr,li2;
vector <char> li;
int p1,p2,p3;
cin>>p1>>p2>>p3;
cin>>sr;
for(int i=1;i<sr.size();i++)
{
if(sr[i]=='-')
{
if(sr[i+1]-sr[i-1]==1)
{
sr.erase(i,1);
i--;
continue;
}
if(sr[i+1]<=sr[i-1]) continue;
sr.erase(i,1);
li.clear();
for(int j=1;j+sr[i-1]<sr[i];j++)
{
for(int k=0;k<p2;k++)
{
switch(p1)
{
case 1:
li.push_back(char(sr[i-1]+j));
break;
case 2:
li.push_back(char(sr[i-1]+j-32));
break;
case 3:
li.push_back('*');
break;
}
}
}
li2="";
for(int i=0;i<li.size();i++) li2+=li[i];
if(p3==2) turn(li2);
sr.insert(i,li2);
i+=li.size()-1;
}
}
cout<<sr<<endl;
return 0;
}