Dada uma lista de expressões matemáticas que são verdadeiras e consistem em cálculos de módulo restante com dois números e um resultado, sua tarefa é produzir os primeiros n
números que são verdadeiros para todas as declarações da lista.
Por exemplo:
[m % 3 = 0, m % 4 = 1, m % 5 = 3]
, onde% é o operador de módulo.
Para n
= 3, os 3 primeiros números (contando de 0) que se encaixam na sequência são 33, 93, 153
, portanto, o resultado seria esse (o formato é seu).
Regras / IO
- Você pega um número positivo
n
e uma lista de verdades. Obviamente, o que você precisa é apenas o RHS da operação do módulo e o resultado. n
e os números na lista de verdades sempre estarão no intervalo 1 -> 2 ^ 31-1 , e também os resultados.- Você recebe entradas de qualquer forma conveniente e saídas de qualquer forma conveniente. Por exemplo, a entrada de:
3 [3 0, 4 1, 5 3]
e saída:33 93 153
. - É garantido que a solução é matematicamente possível.
- A fonte de entrada pode ser de um arquivo, parâmetros de função, stdin, etc ... O mesmo vale para a saída.
- Sem brechas.
- Isso é código-golfe, então a menor contagem de bytes vence.
Casos de teste
# 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
Implementação de referência em pseudo-código
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
um resultado válido?