[洛谷]P1098 字符串的展开
题目描述:
代码如下:
#include <bits/stdc++.h>
using namespace std;
inline void read(int &x){
x=0;int f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
x*=f;
}
int p1,p2,p3;
string s,ans;
int main(int argc, char const *argv[])
{
read(p1),read(p2),read(p3);
cin>>s;
for(int i=0;i<s.size();i++)
{
if(s[i]=='-' && ((islower(s[i-1]) && islower(s[i+1])) || (isdigit(s[i-1]) && isdigit(s[i+1]))) && s[i+1]>s[i-1])
{
if(p3==1)
for(char ch=s[i-1]+1;ch<s[i+1];ch++)
for(int j=1;j<=p2;j++)
{
if(p1==3)
ans+='*';
if(p1==1)
ans+=ch;
if(p1==2)
ans+=toupper(ch);
}
else
for(char ch=s[i+1]-1;ch>s[i-1];ch--)
for(int j=1;j<=p2;j++)
{
if(p1==3)
ans+='*';
if(p1==1)
ans+=ch;
if(p1==2)
ans+=toupper(ch);
}
}
else
ans+=s[i];
}
cout<<ans<<endl;
return 0;
}