Республиканская олимпиада по информатике, 2012 год, 9 класс


(Быки и коровы)
Ограничение по времени:
2 секунды
Ограничение по памяти:
64 мегабайта

В этой задаче Вам предлагается сыграть в известную игру «Быки и коровы». Компьютер загадывает число из 4-х различных цифр от 1 до 9, а Ваша программа должна его отгадать с нескольких попыток. Попытка — это 4-значное число с неповторяющимися цифрами. В ответ на попытку Вашей программе будет даваться ответ в виде целого числа, равного $10 \cdot X + Y,$ где $X$ — количество цифр, угаданных на неправильных позициях, а $Y$ — количество цифр, угаданных на верных позициях. Таким образом, в случае если программа правильно угадала загаданное число, код ответа будет равен 4. В этом случае программа должна завершиться. Учтите, что количество потраченных попыток будет учитываться при подсчете оценки за тест.
    Ваша программа должна делать попытки, вызывая функцию guess(x), параметром и результатом которой является целое число. Повторный вызов guess с аргументом, который ранее использовался, либо передача в качестве аргумента не 4-х значного числа, либо числа, содержащего одинаковые цифры, либо числа, содержащего цифру 0, считается ошибкой.
    Для правильной работы Вашей программы необходимо подключить библиотеку/модуль bullscows:
    C/C++: #include "bullscows.h"
    Pascal: uses bullscows;
    Функция объявлена следующим образом:
    C/C++: int guess(int x); Pascal: function guess(x : longint) : longint;
    Оценка будет происходить следующим образом. Пусть $T$ — полный балл за тест, a $R$ — балл, полученный программой. Если Ваша программа угадывает число не более чем за 7 попыток, то $R = T,$ если больше чем за 7, то не больше, чем за 10, то $R = 0.75 \cdot T,$ если больше чем за 10, но не больше, чем за 14, то $R = 0.5 \cdot T,$ если больше чем за 14, но не больше, чем за 30, то $R = 0.25 \cdot T.$ В остальных случаях $R=0.$
посмотреть в олимпиаде

Комментарий/решение: