你被委托开发一个用于睿抗机器人开发者大赛CAIP-编程技能赛的管理系统,这个管理系统需要一些账号名和密码,你需要按照规则根据账号生成对应的密码,具体规则是:
将当前操作的字符串初始化为提供的账号名。
每次生成会规定一个生成轮次 N。
对于每一轮次,按顺序执行以下操作:
对于当前操作的字符串,将所有大写字母替换为后一个字母;如将 A 替换为 B,B 替换为 C,以此类推。特别地,将 Z 替换为 A。对于所有小写字母,将其替换为前一个字母,如将 z 替换为 y,以此类推。特别地,将 a 替换为 z。
对于完成上一步后的字符串,如果连续出现了至少三个大写字母(不一定要相同),则将这些连续的大写字母全部改为小写字母;对于连续出现了至少三个小写字母(不一定要相同),则将这些连续的小写字母全部改为大写字母。注意修改不在原地进行,即修改结果不影响本次步骤中对于连续的判定。
现在给定账号名以及轮次,请你生成对应的密码。
输入格式:
输入第一行是一个正整数 N (1≤N≤10),表示生成的轮次数;
输入第二行是一个字符串 S (1≤∣S∣≤100),表示需要操作的账号名。账号名只包含大小写及数字。
注意:如果 S 为 yourname,请将 S 改为你的名字的拼音拼写,全小写,不包含空格。如你的名字为张三,则你操作的字符串应为 zhangsan。请务必写真实姓名,写错误的名字可能会导致成绩被取消。
输出格式:
输出两行,第一行为账号名,第二行为根据规则生成的密码。
输入样例:
1
DOGcat1234XZxzABabFFXIV
输出样例:
DOGcat1234XZxzABabFFXIV
ephBZS1234YAwyBCzaggyjw
输入样例:
2
DOGcat1234XZxzABabFFXIV
输出样例:
DOGcat1234XZxzABabFFXIV
DOGcat1234ZBvxCDYZFFXIV
#include <bits/stdc++.h>
using namespace std;
string zhanghao;
string mima;
void part1(){
int len=mima.length();
for(int i=0;i<len;i++){
if(mima[i]>='A'&&mima[i]<'Z'){
mima[i]+=1;
}else if(mima[i]=='Z'){
mima[i]='A';
}else if(mima[i]>'a'&&mima[i]<='z'){
mima[i]-=1;
}else if(mima[i]=='a'){
mima[i]='z';
}
}
}
void part2(){
int daxie=0;
int xiaoxie=0;
int len=mima.length();
int lot=0; //1:大写, 2:小写, 3:数字
for(int i=0;i<len;i++){
if(mima[i]>='A'&&mima[i]<='Z'){
if(lot!=1){
if(lot==2&&xiaoxie>=3){
for(int j=i-1;j>=i-xiaoxie;j--){
mima[j]-=32;
}
}
daxie=0;
xiaoxie=0;
}
daxie++;
lot=1;
}else if(mima[i]>='a'&&mima[i]<='z'){
if(lot!=2){
if(lot==1&&daxie>=3){
for(int j=i-1;j>=i-daxie;j--){
mima[j]+=32;
}
}
daxie=0;
xiaoxie=0;
}
xiaoxie++;
lot=2;
}else{
if(lot==1&&daxie>=3){
for(int j=i-1;j>=i-daxie;j--){
mima[j]+=32;
}
}else if(lot==2&&xiaoxie>=3){
for(int j=i-1;j>=i-xiaoxie;j--){
mima[j]-=32;
}
}
daxie=0;
xiaoxie=0;
lot=3;
}
}
if(lot==1&&daxie>=3){
for(int j=len-1;j>=len-daxie;j--){
mima[j]+=32;
}
}else if(lot==2&&xiaoxie>=3){
for(int j=len-1;j>=len-xiaoxie;j--){
mima[j]-=32;
}
}
}
int main(){
int N;
cin>>N;
cin>>zhanghao;
if(zhanghao=="yourname")
zhanghao="zhangchunxia";
mima=zhanghao;
while(N--){
part1();
part2();
}
cout<<zhanghao<<endl<<mima<<endl;
return 0;
}