题目描述
输入一串只有六个单词和一个句号的句子,单词与单词之间空格隔开,把其中所有数字找出来(正常: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.