[洛谷]P1098 字符串的展开

[洛谷]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;
}


posted @ 2019-10-12 22:41  WJSoj  阅读(167)  评论(0编辑  收藏  举报