1 条题解
-
0
修正一下题目, 是原序输出, 是逆序输出。
简单模拟题,按照题目意思模拟即可,但是坑点很多。
以下默认 :
- 对于 ,直接枚举 ,输出小写字母。
- 对于 ,和 反一下,输出大写字母。
- 对于 ,输出 。
每个字符重复输出 次。
如果 ,则从 倒着枚举。
srds:
- 符号左、右边一端字母,一端数字,应当输出 。
- 如果出现类似于 的数据,输出 。
- 如果 ,输出 ,譬如:。
#include <bits/stdc++.h> using namespace std; #define int long long #define rep(i,x,y) for(int i=x;i<=y;i++) #define rrep(i,x,y) for(int i=x;i>=y;i--) #define pr printf #define inf 1e9 #define lowbit(x) x & (-x) const int N=1e6+10; inline int read() { int s = 0, w = 1; char c = getchar(); while (!isdigit(c)) { if (c == '-') w = -1; c = getchar(); } while (isdigit(c)) { s = (s << 1) + (s << 3) + (c ^ 48); c = getchar(); } return s * w; } int p1,p2,p3; string s; inline void small(char x){//转小写或者不转。 if(isdigit(x)) cout<<x; else if(x >= 'A' && x <= 'Z') cout<<char(x+32); else cout<<x; } inline void big(char x){//转大写或者不转。 if(isdigit(x)) cout<<x; else if(x >= 'a' && x <= 'z') cout<<char(x-32); else cout<<x; } inline void judge(int sr , int ed){ /* 分情况讨论。*/ if(p1==1){ if(p3==2) rrep(i,s[ed]-1,s[sr]+1) rep(j,1,p2) small(char(i)); else rep(i,s[sr]+1,s[ed]-1) rep(j,1,p2) small(char(i)); } if(p1==2){ if(p3==2) rrep(i,s[ed]-1,s[sr]+1) rep(j,1,p2) big(char(i)); else rep(i,s[sr]+1,s[ed]-1) rep(j,1,p2) big(char(i)); } if(p1==3) rep(i,s[sr]+1,s[ed]-1) rep(j,1,p2) pr("*"); } signed main() { p1=read();p2=read();p3=read(); cin>>s; int len=s.size(); rep(i,0,len-1){ if(s[i]!='-') cout<<s[i]; else{ if(isdigit(s[i-1])&&isalpha(s[i+1])) pr("-"); else if(isalpha(s[i-1])&&isdigit(s[i+1])) pr("-"); else if(s[i-1]=='-'||s[i+1]=='-') pr("-"); else if(s[i-1] >= s[i+1]) pr("-"); else if(!isalnum(s[i-1])||!isalnum(s[i+1])) pr("-"); else judge(i-1,i+1); } } return 0; }
- 1
信息
- ID
- 185
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 180
- 已通过
- 58
- 上传者