Источник: Facebook Hacker Cup.
Я попытался сгенерировать несколько списков возвращаемых значений из функции ниже, но, похоже, не могу найти то, что позволяет предсказывать будущие случайные числа.Как мне решить проблему, подобную этой?
Хакер игровых автоматов
Вы недавно подружились с парнем, который пишет программное обеспечение для игровых автоматов.Немного пообщавшись с ним, вы замечаете, что у него есть склонность демонстрировать свои знания о работе игровых автоматов.В конце концов вы заставляете его точно описать для вас алгоритм, используемый на машине определенной марки.Алгоритм выглядит следующим образом:
int getRandomNumber() {
secret = (secret * 5402147 + 54321) % 10000001;
return secret % 1000;
}
Эта функция возвращает целое число в [0, 999];каждая цифра представляет собой один из десяти символов, которые появляются на колесе во время определенного состояния машины. Первоначально для secret установлено некое неотрицательное значение, неизвестное вам.
Наблюдая за работой машины достаточно долго, вы можете определить значениесекрет и, таким образом, прогнозировать будущие результаты.Зная будущие результаты, вы сможете делать умные ставки и выигрывать много денег.
Входные данные В первой строке входных данных содержится положительное число T, количество тестовых случаев.Затем следуют Т-тесты.Каждый тестовый пример состоит из положительного целого числа N, которое вы делаете.Следующие N токенов - это целые числа от 0 до 999, описывающие ваши наблюдения.Выходные данные Для каждого теста выведите следующие 10 значений, которые будут отображаться машиной, разделенными пробелами.Если последовательность, которую вы наблюдали, не может быть воспроизведена машиной, которую вам описал ваш друг, вместо этого напечатайте «Неправильная машина».Если вы не можете однозначно определить следующие 10 значений, вместо этого выведите «Недостаточно наблюдений».
Ограничения T = 20 1 ≤ N ≤ 100 Токены на входе имеют длину не более 3 символов и содержат только цифры 0-9.
выборочный ввод
5
1 968
3 767 308 284
5 78 880 53 698 235
7 23 786 292 615 259 635 540
9 862 452 303 558 767 105 911 846 462
выборочный вывод
Not enough observations
577 428 402 291 252 544 735 545 771 34
762 18 98 703 456 676 621 291 488 332
38 802 434 531 725 594 86 921 607 35
Wrong machine