середа, 18 лютого 2015 р.

Slon

(Джерело: http://www.olymp.vinnica.ua/index_ua.php?lng=ua&cid=99)

Задача. Петрик П'яточкін вишикував у рядок слоненят та рахує їх по кожному кольору окремо. Всього буває 8 кольорів слоненят. У рядок вишикувались N (10<N<999) слоненят. Скільки слоненят кожного кольору стоїть перед Петриком? Бажано їх порахувати пройшовши всього один раз перед строєм.

Технічні умови. Програма зчитує з клавіатури ціле число N - кількість слоненят, потім, через пропуск - N чисел від 1 до 8, якими ми пронумеровали кожен колір в тій послідовності, в якій вони потрапляли на очі Петрику від початку рядка. Програма виводить на екран в один рядок через пропуски пари цілих чисел, де перше число пари - колір, а друге - кількість слоненят такого кольору.

Приклад.

Введення>12 1 1 2 3 3 1 5 6 8 7 6 5 
Виведення> 1 3 2 1 3 2 4 0 5 2 6 2 7 1 8 1
Розв'язання.
Використаємо для підрахунку слоників масив цілих чисел з восьми елементів. Ітий елемент масиву буде кількість слоників ітого кольору. Так як пам'ятати стрій слоників не потрібно, то будемо зчитувати по одному слонику і збільшувати на 1, елемент масиву з номером відповідного кольору.
Запишемо алгоритми мовами програмування.

Free Pascal:
Var N, K : 0..999;
      Ks : Array [1..8] Of 0..999;
Begin
 Read(N);
 For N := 1 To N Do Begin 
  Read (K);
  Inc(Ks[K]);
 End;
 For K := 1 To 8 Do
  Write (K,' ',Ks[K],' ');
End.

C++:
#include <iostream>
using namespace std;
int main()
{
  int n, k, c[]={0,0,0,0,0,0,0,0};
  cin >> n;
  for (int i=0; i<n; i++)
  {
   cin >> k;
   c[k-1]++;
  }
  for (int i=0; i<8; i++)
   cout << i+1 << ' ' << c[i] << ' ';
}

Немає коментарів:

Дописати коментар