Выяснить, сколько среди заданных чисел различных - 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.

Объяснение кода листинга программы

  1. Объявляется массив a типа longint с длиной MAXN
  2. Объявляются переменные n, i и ans типа longint
  3. Создается процедура qsort для сортировки массива методом быстрой сортировки
  4. Генерируется случайное начальное значение для генерации случайных чисел
  5. Считывается число n с клавиатуры
  6. Считываются числа в массив a
  7. Вызывается процедура сортировки qsort для сортировки массива a
  8. Устанавливается значение переменной ans равным 1
  9. В цикле проверяется, сколько чисел в массиве a больше предыдущих и увеличивается значение переменной ans соответственно
  10. Выводится значение переменной ans на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы