Здравствуйте.
Есть вопросы по условию задачи и по ее решению.
Условие:
На вход программы поступает последовательность из N натуральных чисел, каждое из которых не больше
1000. Требуется вывести цифры, встречающиеся в
эти числах, в порядке неубывания частоты их появления. Если какие-то цифры встречаются одинаковое число раз, они выводятся в порядке убывания.
Входные данные:
На вход программе подаётся натуральное число N (N <= 1000), а затем N натуральных чисел, каждое из которых не превышает
10000.
В решении этой задачи определяется "общее количество цифр во вводимых числах," а после выполняется цикл столько раз, сколько нашлось всего цифр. Но разве их не может быть очень много? Значит и цикл будет выполняться очень много раз?
Я составила свой вариант решения этой задачи. И хотелось бы узнать, могут ли за нее поставить 4 балла.
var
a: array[0..9] of word;
j, n, i, num, s, min, h: integer;
begin
readln(n);
for i:=0 to 9 do a[i ]:=0;
for i := 1 to n do begin
readln(num);
while num > 0 do begin
s:= num mod 10;
a[s ] := a[s ] + 1;
num := num div 10;
end
end;
for i := 0 to 9 do
if a[i ] <> 0 then begin
s:= i; break;
end;
for i := s to 9 do begin
min:= s;
while (a[min] = 0) and (min < 9) do
min:= min + 1;
if a[min] = 0 then break;
for j:= min to 9 do
if (a[j]<>0) and (a[j] < a[min]) then min:=j;
for h:= 9 downto s do
if (a[min] = a[h]) and (a[h] <> 0) then begin
write(h, ' ');
a[h]:= 0;
end;
end;
end.