原**
題目描述
在初賽普及組的「閱讀程式寫結果」的問題中,我們曾給出乙個字串展開的例子:如果在輸入的字串中,含有類似於「d-h」或者「4-8」的字串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母獲數字串替代其中的減號,即,將上面兩個子串分別輸出為「defgh」和「45678」。在本題中,我們通過增加一些引數的設定,使字串的展開更為靈活。具體約定如下:
(1) 遇到下面的情況需要做字串的展開:在輸入的字串中,出現了減號「-」,減號兩側同為小寫字母或同為數字,且按照ascii碼的順序,減號右邊的字元嚴格大於左邊的字元。
(2) 引數p1:展開方式。p1=1時,對於字母子串,填充小寫字母;p1=2時,對於字母子串,填充大寫字母。這兩種情況下數字子串的填充方式相同。p1=3時,不論是字母子串還是數字字串,都用與要填充的字母個數相同的星號「*」來填充。
(3) 引數p2:填充字元的重複個數。p2=k表示同乙個字元要連續填充k個。例如,當p2=3時,子串「d-h」應擴充套件為「deeefffgggh」。減號兩邊的字元不變。
(4) 引數p3:是否改為逆序:p3=1表示維持原來順序,p3=2表示採用逆序輸出,注意這時候仍然不包括減號兩端的字元。例如當p1=1、p2=2、p3=2時,子串「d-h」應擴充套件為「dggffeeh」。
(5) 如果減號右邊的字元恰好是左邊字元的後繼,只刪除中間的減號,例如:「d-e」應輸出為「de」,「3-4」應輸出為「34」。如果減號右邊的字元按照ascii碼的順序小於或等於左邊字元,輸出時,要保留中間的減號,例如:「d-d」應輸出為「d-d」,「3-1」應輸出為「3-1」。輸入格式:輸入檔案expand.in包括兩行:
第1行為用空格隔開的3個正整數,一次表示引數p1,p2,p3。
第2行為一行字串,僅由數字、小寫字母和減號「-」組成。行首和行末均無空格。
輸出格式:輸出檔案expand.out只有一行,為展開後的字串。
輸入樣例#1:
【輸入樣例1】輸出樣例#1:1 2 1
abcs-w1234-9s-4zz
【輸入樣例2】
2 3 2
a-d-d
【輸出樣例1】40%的資料滿足:字串長度不超過5abcsttuuvvw1234556677889s-4zz
【輸出樣例2】
acccbbbd-d
100%的資料滿足:1<=p1<=3,1<=p2<=8,1<=p3<=2。字串長度不超過100
noip 2007 提高第二題
題解這題只要一步一步慢慢細心模擬即可。 **
vara,b,c,i,j,k,t:longint;
jj:char;
s,s1,s2:ansistring;
begin
readln(a,b,c);
readln(s);
i:=0;
while i
begin
s1:='';s2:='';
inc(i);
if s[i]='-' then continue;
if s[i+1]='-' then
if (s[i] in ['0'..'9'])and(s[i+2] in ['0'..'9'])or(s[i] in ['a'..'z'])and(s[i+2] in ['a'..'z']) then
begin
if (s[i]=s[i+2])or(s[i]>s[i+2]) then continue;
if ord(s[i])=ord(s[i+2])-1 then delete(s,i+1,1)
else
begin
for jj:=chr(ord(s[i])+1) to chr(ord(s[i+2])-1) do
for k:=1 to b do s1:=s1+jj;
if a=1 then for j:=1 to length(s1) do upcase(s1[j]);
if a=2 then for j:=1 to length(s1) do
if s1[j] in ['a'..'z'] then s1[j]:=chr(ord(s1[j])-32);
if a=3 then for j:=1 to length(s1) do s1[j]:='*';
t:=0;
if c=2 then for j:=length(s1) downto 1 do begin inc(t);s2:=s2+s1[j];end
else
if c=1 then s2:=s1;
delete(s,i+1,1);
insert(s2,s,i+1);
end;
end;
end;
writeln(s);
end.
洛谷1098 字串的展開(2528 1064)
在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或者 4 8 的字串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母獲數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些引數的設定...
洛谷 模擬 字串 1098 字串的展開
在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或者 4 8 的字串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母獲數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些引數的設定...
洛谷P1098 字串的展開
題目描述 在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或者 4 8 的字串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些...