Étant donné une liste d'expressions mathématiques qui sont toutes vraies et consistent en des calculs de reste modulo avec deux nombres et un résultat, votre tâche consiste à produire les premiers n
nombres qui sont vrais pour toutes les instructions de la liste.
Par exemple:
[m % 3 = 0, m % 4 = 1, m % 5 = 3]
, où% est l'opérateur modulo.
Pour n
= 3, les 3 premiers nombres (en comptant à partir de 0) qui correspondent à la séquence sont 33, 93, 153
, donc votre résultat serait que (formatez-vous).
Règles / IO
- Vous prenez un nombre positif
n
et une liste de vérités. Bien sûr, les choses dont vous avez besoin ne sont que le RHS de l'opération modulo et le résultat. n
et les nombres dans la liste des vérités seront toujours dans la plage 1 -> 2 ^ 31-1 , et les résultats aussi.- Vous prenez l'entrée sous n'importe quelle forme pratique et la sortie sous n'importe quelle forme pratique. Par exemple, l' entrée:
3 [3 0, 4 1, 5 3]
et la sortie:33 93 153
. - Il est garanti que la solution est mathématiquement possible.
- La source d'entrée peut provenir d'un fichier, des paramètres de fonction, stdin, etc ... Il en va de même pour la sortie.
- Pas de failles.
- C'est le code-golf, donc le nombre d'octets le plus bas l'emporte.
Cas de test
# Input in the form <n>, <(d r), (d2 r2), ...>
# where <d> = RHS of the modulo expression and <r> the result of the expression. Output in the next line.
5, (3 2), (4 1), (5 3)
53 113 173 233 293
3, (8, 0), (13, 3), (14, 8)
120 848 1576
Implémentation de référence en pseudo-code
n = (an integer from stdin)
truths = (value pairs from stdin)
counter = 0
while n != 0 {
if matches_criterias(counter, truths) {
print counter
n -= 1
}
counter += 1
}
0
résultat valide?