Выяснить, сколько среди заданных чисел различных - Pascal
Формулировка задачи:
Помогите пожалуйста решить задачую Заранее спасибо!
Дано N чисел, требуется выяснить, сколько среди них различных.
Входные данные
В первой строке дано число N – количество чисел. (1 <= N <= 100000) Во второй строке даны через пробел N чисел, каждое не превышает 2*109 по модулю.Выходные данные
Выведите число, равное количеству различных чисел среди данных.Примеры
входные данные
5 1 0 1 2 0выходные данные
3Решение задачи: «Выяснить, сколько среди заданных чисел различных»
textual
Листинг программы
- program task;
- const
- MAXN = 150007;
- var
- a : array[0 .. MAXN] of longint;
- n, i, ans : longint;
- procedure qsort(low : longint; high : longint);
- var ii, jj, m, t : longint;
- begin
- ii := low; jj := high; m := a[Random(jj - ii + 1) + ii];
- repeat
- while (m > a[ii]) do inc(ii);
- while (a[jj] > m) do dec(jj);
- if (ii <= jj) then begin
- t := a[ii]; a[ii] := a[jj]; a[jj] := t;
- inc(ii); dec(jj);
- end;
- until (ii > jj);
- if (low < jj) then qsort(low, jj);
- if (ii < high) then qsort(ii, high);
- end;
- begin
- Randomize;
- readln(n);
- for i := 1 to n do read(a[i]);
- qsort(1, n);
- ans := 1;
- for i := 2 to n do
- if (a[i] > a[i - 1]) then inc(ans);
- writeln(ans);
- end.
Объяснение кода листинга программы
- Объявляется массив
a
типа longint с длиной MAXN - Объявляются переменные
n
,i
иans
типа longint - Создается процедура
qsort
для сортировки массива методом быстрой сортировки - Генерируется случайное начальное значение для генерации случайных чисел
- Считывается число
n
с клавиатуры - Считываются числа в массив
a
- Вызывается процедура сортировки
qsort
для сортировки массиваa
- Устанавливается значение переменной
ans
равным 1 - В цикле проверяется, сколько чисел в массиве
a
больше предыдущих и увеличивается значение переменнойans
соответственно - Выводится значение переменной
ans
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д