Emil dispose d’un nombre x et souhaite le transformer en un autre nombre y. Pour atteindre cet objectif, il peut effectuer les opérations suivantes :
Il peut augmenter le nombre x de 1 (x = x + 1) en payant 1unité de monnaie.
Il peut diminuer le nombre x de 1 (si x est plus grand que 0) (x = x - 1) en payant 1unité de monnaie.
Il peut multiplier x par un entier positif k (x = k ⋅ x) en payant 2kunités de monnaie.
Il peut diviser x par un entier positif k si x est divisible par k (x = x / k) en payant 2kunités de monnaie.
Écrivez un programme pour déterminer le montant minimal d’argent dont Emil a besoin pour transformer x en y. Vous devrez également afficher les opérations dans l'ordre où elles doivent être effectuées. Notez que s’il existe plusieurs façons d’atteindre ce coût minimal, vous pouvez en afficher n’importe laquelle. Par ailleurs, il n’est pas nécessaire de réduire au minimum le nombre d’opérations.
Entrée
L’entrée se compose de deux entiers x et y (1 ≤ x, y ≤ 10 000), qui représentent respectivement le nombre initial d’Emil et le nombre souhaité.
Sortie
La première ligne de la sortie doit afficher deux entiers séparés par un espace : m et n, où m désigne le nombre d’opérations et n correspond au montant minimal d’argent nécessaire pour transformer x en y.
Sur les m lignes suivantes, indiquez l’indice de l’opération, , dans l’ordre où elles doivent être exécutées. Si l’opération est une multiplication ou une division ( ou ), inscrivez d’abord l’indice de l’opération , suivi d’un espace, puis le nombre .