NOIp模拟 同心锁
来源:互联网 发布:mac照片拷到移动硬盘 编辑:程序博客网 时间:2024/04/29 19:28
〖题目描述〗
纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却人间无数。
柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮!
——秦观《鹊桥仙》
夜未央。带着细腻连绵的眼光遥望牛郎织女千年的爱情,平淡、精致且长久
的幸福感顿时氤氲在心。或许幸福就是这样,不求朝暮合,但求永同心。据说同
心锁是恋人们定情的一种信物,上面刻着两人的名字,它见证着天长地久的爱情,
诉说着爱情的坎坷与甜蜜。
据说在一座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 2016using 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;}
0 0
- NOIp模拟 同心锁
- 游乐园的同心锁
- Noip模拟
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- 【09 NOIP 模拟】light
- [NOIP模拟]Day1
- 8.9CH NOIP模拟
- 8.10FCH NOIP模拟
- 8.13NOIP模拟
- 8.14NOIP模拟
- noip模拟赛 双城记
- Noip模拟总结
- 【noip模拟赛】密码
- HDU 1166 敌兵布阵(树状数组)
- esp8266&nodemcu编译 firmware in osx
- noiopenjudge02:二分法求函数的零点 二分
- centos7安装mysql5.7
- bash变量测试
- NOIp模拟 同心锁
- Qt实现简单的程序自动更新
- structs2 项目学习 代码积累
- Java 数据结构(链表)
- 切分算法(摘自算法第四版)
- Android系统配置管理-ROM审查
- 浅析Tomcat----自己动手写服务器
- 《勇哥极客逆向培训班》第一章锻造绝世神兵
- 【codevs1295 N皇后问题(不输出方案)】回溯法