1 条题解
-
0
C++ :
#include <stdio.h> #include <string.h> #include <ctype.h> char s[999], c; int i, j, k, p1, p2, p3; int main() { scanf ("%d%d%d%s", &p1, &p2, &p3, s); for (i = 0; i < strlen (s); ++i) if (i && s[i] == '-' && s[i + 1] > s[i - 1] && isalnum (s[i - 1]) && s[i + 1] - s[i - 1] < 26) { if (s[i + 1] - s[i - 1] > 1) { char a[999] = ""; j = 0; for (k = s[i - 1] + 1; k < s[i + 1]; ++k) { if (p1 == 1) c = tolower (k); else if (p1 == 2) c = toupper (k); else c = '*'; memset (a + j, c, p2); j += p2; } if (p3 == 1) printf (a); else for (--j; j >= 0; --j) putchar (a[j]); } } else putchar (s[i]); return 0; }
Pascal :
var i,p1,p2,p3:longint; s,ss:ansistring; procedure num(a:longint); var x,j:longint; i:char; begin x:=ord(s[a+1])-ord(s[a-1]); if p1<>3 then begin if x>1 then if p3=1 then for i:=succ(s[a-1]) to pred(s[a+1]) do for j:=1 to p2 do ss:=ss+i else for i:=pred(s[a+1]) downto succ(s[a-1]) do for j:=1 to p2 do ss:=ss+i; if x<=0 then ss:=ss+'-'; if x=1 then exit; end else begin if x>1 then for i:=succ(s[a-1]) to pred(s[a+1]) do for j:=1 to p2 do ss:=ss+'*'; if x<=0 then ss:=ss+'-'; if x=1 then exit; end; end; procedure let(a:longint); var x,j:longint; i:char; begin x:=ord(s[a+1])-ord(s[a-1]); if p1=1 then begin if x>1 then if p3=1 then for i:=succ(s[a-1]) to pred(s[a+1]) do for j:=1 to p2 do ss:=ss+i else for i:=pred(s[a+1]) downto succ(s[a-1]) do for j:=1 to p2 do ss:=ss+i; if x<=0 then ss:=ss+'-'; if x=1 then exit; end else if p1=3 then begin if x>1 then for i:=succ(s[a-1]) to pred(s[a+1]) do for j:=1 to p2 do ss:=ss+'*'; if x<=0 then ss:=ss+'-'; if x=1 then exit; end else if p1=2 then if x>1 then if p3=1 then for i:=succ(s[a-1]) to pred(s[a+1]) do for j:=1 to p2 do ss:=ss+chr(ord(i)-32) else for i:=pred(s[a+1]) downto succ(s[a-1]) do for j:=1 to p2 do ss:=ss+chr(ord(i)-32); if x<=0 then ss:=ss+'-'; if x=1 then exit; end; begin readln(p1,p2,p3); read(s); ss:=''; ss:=ss+s[1]; for i:=2 to length(s) do if (s[i]<>'-') then ss:=ss+s[i] else begin if (s[i-1]>='0')and(s[i+1]>='0')and(s[i-1]<='9')and(s[i+1]<='9')then num(i) else if (s[i-1]>='a')and(s[i+1]>='a')and(s[i-1]<='z')and(s[i+1]<='z')then let(i) else ss:=ss+'-'; end; writeln(ss); end.
- 1
信息
- ID
- 3215
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者