題目描述
輸入一串只有六個單詞和一個句號的句子,單詞與單詞之間空格隔開,把其中所有數字找出來(正常:one...ten,特殊:a both another first second third)把每個數字的平方排序(不足兩位數的前面補零),組成最小的數字(開頭去零)輸出。樣例輸入
Black Obama is two five zero .樣例輸出
425思路
O(N^2)按題意把所有數字平方后排序輸出。var a,b,ans:string; i,j,k,l:longint; z:array[1..20] of longint; c:array[1..10] of string;begin readln(a); for i:=1 to 6 do begin j:=pos(' ',a); if pos('.',a)<j then j:=pos('.',a); b:=copy(a,1,j-1); if (b='one')or(b='a')or(b='another')or(b='first') then inc(z[1]); if (b='two')or(b='both')or(b='second') then inc(z[2]); if (b='third')or(b='three') then inc(z[3]); if b='four' then inc(z[4]); if b='five' then inc(z[5]); if b='six' then inc(z[6]); if b='seven' then inc(z[7]); if b='eight' then inc(z[8]); if b='nine' then inc(z[9]); if b='ten' then inc(z[10]); if b='eleven' then inc(z[11]); if b='twelve' then inc(z[12]); if b='thirteen' then inc(z[13]); if b='fourteen' then inc(z[14]); if b='fifteen' then inc(z[15]); if b='sixteen' then inc(z[16]); if b='seventeen' then inc(z[17]); if b='eighteen' then inc(z[18]); if b='nineteen' then inc(z[19]); if b='twenty' then inc(z[20]); delete(a,1,j); end; for i:=1 to 20 do while z[i]<>0 do begin inc(j); str(i*i,c[j]); k:=length(c[j]); if k>2 then delete(c[j],1,1); if k=1 then insert('0',c[j],1); dec(z[i]); end; for i:=1 to j-1 do for k:=i+1 to j do if c[i]>c[k] then begin b:=c[i];c[i]:=c[k];c[k]:=b; end; if c[i,1]='0' then delete(c[i],1,1); for i:=1 to j do write(c[i]);end.