Сайт Богданова Дмитрия Валериевича

Задание №1701/25

Задание

Дан массив, содержащий 2017 целых чисел. Необходимо определить количество «уникальных» значений элементов этого массива, то есть количество значений элементов без учёта их возможных повторов. Например, в массиве из 6 элементов, равных соответственно 2; 0; 1; 0; 0; 1, уникальными значениями являются 0; 1; 2, значит, ответом будет 3 — их количество.

Исходные данные объявлены так, как показано ниже. Запрещается использовать не описанные переменные, но допускается не использовать некоторые из них.

  • Копировать
    const
      N = 2017;
    var
      a : array [0 .. N - 1] of integer;
      i, j, count : integer;
    begin
      for i := 0 to N - 1 do
        readln(a[i]);
      ...
    end.
    
  • Копировать
    #include <stdio.h>
    #define N 2017
    
    int main() {
      int a[N];
      int i, j, count;
      for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
      ...
      return 0;
    }
    
  • Копировать
    CONST N = 2017
    DIM A(N - 1) AS INTEGER
    DIM I, J, COUNT AS INTEGER
    FOR I = 0 TO N - 1
      INPUT A(I)
    NEXT I
    ...
    END
    
  • Копировать
    # допускается также использо-
    # вание целочисленных
    # переменных j, count
    N = 2017
    a = []
    for i in range(N) :
      a.append(int(input()))
    ...
    

В качестве ответа необходимо привести фрагмент программы, который должен находиться на месте многоточия. Допускается решение на другом языке программирования. В этом случае укажите название языка и используемую версию. При этом необходимо использовать те же самые исходные данные и переменные, какие были предложены в условии.

Решение

Подробнее...

Ответ

  • Копировать
    count := 0;
    for i := 0 to N - 1 do begin
      j := 0;
      while a[j] <> a[i] do
        j := j + 1;
      if j = i then
        count := count + 1
    end;
    writeln(count);
    
  • Копировать
    count = 0;
    for (i = 0; i < N; i++) {
      j = 0;
      while (a[j] != a[i])
        j++;
      if (j == i)
        count++;
    }
    printf("%d", count);
    
  • Копировать
    COUNT = 0
    FOR I = 0 TO N - 1
      J = 0
      WHILE A(J) <> A(I)
        J = J + 1
      WEND
      IF J = I THEN
        COUNT = COUNT + 1
      END IF
    NEXT I
    PRINT COUNT
    
  • Копировать
    count = 0
    for i in range (N) :
      j = 0
      while a[j] != a[i] :
        j += 1
      if j == i :
        count += 1
    print(count)
    
Подробнее...
Добавить комментарий
Комментарии (0)