〖题目描述〗
纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却人间无数。
柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮!
——秦观《鹊桥仙》
夜未央。带着细腻连绵的眼光遥望牛郎织女千年的爱情,平淡、精致且长久
的幸福感顿时氤氲在心。或许幸福就是这样,不求朝暮合,但求永同心。据说同
心锁是恋人们定情的一种信物,上面刻着两人的名字,它见证着天长地久的爱情,
诉说着爱情的坎坷与甜蜜。
据说在一座OI 桥上,同心锁上显示的文字有着它奇异的呈现方式,需要你
把它稍做改变才可解密。每个同心锁上都有3 个数据。第一个数据是一个字符串
s。第二个数据m 表示把s 串从m 处分为两段,s[1]至s[m-1]为a 串,s[m]至最
后为b 串。第三个数据n 表示你需要做改变的方式。第4 个数据表示把n 处理后
的s 串每个字母变重复次数p,不用重复则为0。
当n=1 时,把s 串中所有大写字母改成小写字母,把所有小写字母改成大写
字母,然后在后面加上‘Immorta1’;
当n=2 时,从s 串中删除所有出现的和b 一样的子串,然后把所有出现的
‘1013’改成‘hh4742’。
当n=3 时,在a 串部分的|n-m|-1 和|n-m|之间插入b 串,并删除b 串部分。
〖输入格式〗
第一行有一个字符串s(长度不超过1993);
第二行有3 个数:m(1<m<s 的长度)、n(1、2 或3)、p(0<=p<100)。
〖输出格式〗
输出一个字符串,为经过多次变化后最终得到的s。
〖样例输入1〗
MEIYOUwsshujuBYhh4742
14 1 1
〖样例输出1〗
mmeeiiyyoouuWWSSSSHHUUJJUUbbyyHHHH44774422IImmmmoorrttaa11
〖样例输入2〗
oiBYhh4742MEIYOU1013hh4742wsshujuBYhh4742
34 2 0
〖样例输出2〗
oiMEIYOUhh4742hh4742wsshuju
〖样例输入3〗
ipkepk
5 3 3
〖样例输出3〗
纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却人间无数。
柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮!
——秦观《鹊桥仙》
夜未央。带着细腻连绵的眼光遥望牛郎织女千年的爱情,平淡、精致且长久
的幸福感顿时氤氲在心。或许幸福就是这样,不求朝暮合,但求永同心。据说同
心锁是恋人们定情的一种信物,上面刻着两人的名字,它见证着天长地久的爱情,
诉说着爱情的坎坷与甜蜜。
据说在一座OI 桥上,同心锁上显示的文字有着它奇异的呈现方式,需要你
把它稍做改变才可解密。每个同心锁上都有3 个数据。第一个数据是一个字符串
s。第二个数据m 表示把s 串从m 处分为两段,s[1]至s[m-1]为a 串,s[m]至最
后为b 串。第三个数据n 表示你需要做改变的方式。第4 个数据表示把n 处理后
的s 串每个字母变重复次数p,不用重复则为0。
当n=1 时,把s 串中所有大写字母改成小写字母,把所有小写字母改成大写
字母,然后在后面加上‘Immorta1’;
当n=2 时,从s 串中删除所有出现的和b 一样的子串,然后把所有出现的
‘1013’改成‘hh4742’。
当n=3 时,在a 串部分的|n-m|-1 和|n-m|之间插入b 串,并删除b 串部分。
〖输入格式〗
第一行有一个字符串s(长度不超过1993);
第二行有3 个数:m(1<m<s 的长度)、n(1、2 或3)、p(0<=p<100)。
〖输出格式〗
输出一个字符串,为经过多次变化后最终得到的s。
〖样例输入1〗
MEIYOUwsshujuBYhh4742
14 1 1
〖样例输出1〗
mmeeiiyyoouuWWSSSSHHUUJJUUbbyyHHHH44774422IImmmmoorrttaa11
〖样例输入2〗
oiBYhh4742MEIYOU1013hh4742wsshujuBYhh4742
34 2 0
〖样例输出2〗
oiMEIYOUhh4742hh4742wsshuju
〖样例输入3〗
ipkepk
5 3 3
〖样例输出3〗
Iiiippppkkkkppppkkkkeeee
这题目太有逼格了!!
/*复习了c++字符串的操作。*/
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 2016
using namespace std;
int m,n,p;
string st;
string res;
void change(string s){
int l=s.size();
for (int i=0;i<l;i++)
{
if (s[i]>='a'&&s[i]<='z') s[i]-=32;
else if (s[i]>='A'&&s[i]<='Z') s[i]+=32;
}
res=s+"Immorta1";
}
void del(string s,string b){
int p=0,lens=s.size(),lenb=b.size();
string tmp;
while(p<lens)
{
if (s.substr(p,lenb)==b) p+=lenb;
else tmp+=s[p],p++;
}
p=0;
while(p<tmp.size())
{
if (tmp.substr(p,4)=="1013") res+="hh4742",p+=4;
else res+=tmp[p],p++;
}
}
void push(string a,string b){
int k=abs(n-m)-1;
res=a.substr(0,k);
res+=b;
res+=a.substr(k,a.size()-k);
}
void work(){
string a=st.substr(0,m-1);
string b=st.substr(m-1,st.size()-m+1);
switch(n)
{
case 1:change(st);
break;
case 2:del(st,b);
break;
case 3:push(a,b);
break;
}
for (int i=0;i<res.size();i++)
for (int j=1;j<=p+1;j++) printf("%c",res[i]);
printf("\n");
}
int main(){
freopen("lock.in","r",stdin);
freopen("lock.out","w",stdout);
cin >> st;
cin >> m >> n>>p;
work();
return 0;
}