Выяснить, сколько среди заданных чисел различных - 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
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д