题目来源【牛客竞赛】:
https://ac.nowcoder.com/acm/problem/16644
题解:
#include<bits/stdc++.h> using namespace std;
bool isok(char a,char b); string func(const string& p,int p1,int p2,int p3);
int main(){ int a,b,c;cin>>a>>b>>c; string s; cin.ignore();getline(cin,s); string ans=func(s,a,b,c); cout<<ans; return 0; }
bool isok(char a,char b){ if(isdigit(a)&&isdigit(b)){ return 1; } else if(isalpha(a)&&isalpha(b)){ return 1; } return 0; } string func(const string& p,int p1,int p2,int p3){ string r=""; string ans=p; for(int i=0;i<ans.length();i++){ if(ans[i]=='-'&&isok(ans[i-1],ans[i+1])&&ans[i-1]<ans[i+1]){ char x=ans[i-1]; r=r+x;x++; while(x!=ans[i+1]){ int k=p2; if(p1==1){while(k--) r=r+x;x++;} if(p1==2){while(k--) r=r+char(toupper(x));x++;} if(p1==3){while(k--) r=r+'*';x++;} } if(p3==2){reverse(r.begin()+1,r.end());} ans.replace(i-1,2,r); i--;r=""; } } return ans; }
|
欢迎提问和交流