|
- #include <algorithm>
- #include <iostream>
- #include <cmath>
- #include <cstring>
- #include <map>
- #include <string>
- #include <vector>
- #include <queue>
- #include <stack>
- #include <cstdio>
- #include <cstdlib>
- using namespace std;
- int main(int argc, char** argv) {
- int n,i,p1,p2,p3,j,k=0,h=0,q=1,w=0,nb=0,bk[40]={0},r=0;
- char a[100]={0},b[40][800]={0,0};
- scanf("%d %d %d\n",&p1,&p2,&p3);
- gets(a);
- n=strlen(a);
- for(i=0;i<n;i++)
- {
- if(a[i]=='-')
- {
- r=0;
- if(a[i-1]>='a'&&a[i-1]<='z'&&a[i+1]>='a'&&a[i+1]<='z')
- {
- if(a[i-1]<a[i+1])
- {
- nb++;
- k=a[i+1]-a[i-1]-1;
- k=k*p2;
- bk[nb]=k;
- if(k>=1)
- {
-
- if(p1==2)
- {
- a[i-1]=a[i-1]-32;
- a[i+1]=a[i+1]-32;
- }
- if(p1==3)
- {
- for(j=1;j<=k;j++)
- {
- b[nb][j]='*';
- }
- a[i]='@';
- continue;
- }
- for(j=1;a[i-1]+j<a[i+1];j++)
- {
- for(h=1;h<=p2;h++,q++)
- {
- b[nb][q]=a[i-1]+j;
- }
- }
- q=1;
- r=1;
- }
- a[i]='@';
- if(p1==2&&r==1)
- {
- a[i-1]=a[i-1]+32;
- a[i+1]=a[i+1]+32;
- }
- }
- }
- if(a[i-1]>='0'&&a[i-1]<='9'&&a[i+1]>='0'&&a[i+1]<='9')
- {
- if(a[i-1]<a[i+1])
- {
- nb++;
- k=a[i+1]-a[i-1]-1;
- k=k*p2;
- bk[nb]=k;
- if(k>=1)
- {
-
- if(p1==3)
- {
- for(j=1;j<=k;j++)
- {
- b[nb][j]='*';
- }
- a[i]='@';
- continue;
- }
- for(j=1;a[i-1]+j<a[i+1];j++)
- {
- for(h=1;h<=p2;h++,q++)
- {
- b[nb][q]=a[i-1]+j;
- }
- }
- q=1;
- }
- a[i]='@';
- }
- }
- }
- }
- for(i=0;i<n;i++)
- {
- if(a[i+1]=='@')
- {
- printf("%c",a[i]);
- w++;
- if(p3==1)
- {
- for(j=1;j<=bk[w];j++)
- printf("%c",b[w][j]);
- }
- if(p3==2)
- {
- for(j=bk[w];j>=1;j--)
- printf("%c",b[w][j]);
- }
- i=i+1;
- }
- else
- printf("%c",a[i]);
- }
- return 0;
- }
复制代码 |
|