Problème: Machine à sous Hacker de Facebook Hacker Cup 2011 Round 1B
Objectif: le code le plus court dans votre langue préférée à l'aide de stdin / stdout. Vous ne pouvez pas supposer qu'il getRandomNumber
est défini, c'est-à-dire que votre solution doit inclure une version potentiellement jouée en tant que fonction ou d'une autre manière.
Solution de référence: sur SO [J'ai choisi la mienne, car elle utilise stdin / stdout et je ne suis pas sûr de la solution de dave.]
Le texte du problème suit:
Vous avez récemment lié d'amitié avec un gars qui écrit des logiciels pour les machines à sous. Après avoir traîné un peu avec lui, vous remarquez qu'il a un penchant pour montrer sa connaissance du fonctionnement des machines à sous. Finalement, vous lui demandez de vous décrire en détail l'algorithme utilisé sur une marque particulière de machine. L'algorithme est le suivant:
int getRandomNumber() {
secret = (secret * 5402147 + 54321) % 10000001;
return secret % 1000;
}
Cette fonction renvoie un nombre entier dans [0, 999]; chaque chiffre représente l'un des dix symboles qui apparaissent sur une roue pendant un état particulier de la machine. secret est initialement défini sur une valeur non négative que vous ne connaissez pas.
En observant le fonctionnement d'une machine assez longtemps, vous pouvez déterminer la valeur du secret et ainsi prédire les résultats futurs. Connaissant les résultats futurs, vous seriez en mesure de parier de manière intelligente et de gagner beaucoup d'argent.
Contribution
La première ligne de l'entrée contient le nombre positif T , le nombre de cas de test. Viennent ensuite les cas de test T. Chaque cas de test se compose d'un entier positif N , le nombre d'observations que vous faites. Les N jetons suivants sont des entiers de 0 à 999 décrivant vos observations.
Production
Pour chaque scénario de test, sortez les 10 valeurs suivantes qui seraient affichées par la machine, séparées par des espaces. Si la séquence que vous avez observée ne peut pas être produite par la machine que votre ami vous a décrite, imprimez-la à la "Wrong machine"
place. Si vous ne pouvez pas déterminer de manière unique les 10 valeurs suivantes, imprimez à la "Not enough observations"
place.
Contraintes
- T = 20
- 1 ≤ N ≤ 100
- Les jetons en entrée ne comportent pas plus de 3 caractères et ne contiennent que des chiffres de 0 à 9.
Exemple d'entrée
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
Exemple de sortie
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