#43 Problème
** Pensées ** Je n'ai pas pu le résoudre pendant le concours. Je pense que ce problème est difficile car je ne peux pas écrire le code pour générer les numéros d'exécution. Je ne pouvais pas non plus écrire. Selon le commentaire, il semble prêter attention au reste divisé par 10 et 9. Lorsque le reste de la division de $ x $ par 10 est égal à 0, le chiffre des unités devient 0 et le nombre d'exécutions pouvant être générées diminue. De même, lorsque le reste de la division de $ x $ par 9 est égal à 0, le nombre d'exécutions pouvant être générées diminue. Parce que, lorsque les uns placent est 0, il n'y a que 0 et 1 numéros d'exécution tels que la différence entre les nombres adjacents est 1. Même lorsqu'il est 9, il n'y en a que 8 et 9. Si vous organisez le type de numéro d'exécution généré pour chacun,
x != 0 mod(10) → 10x+(x%10)-1
x != 9 mod(10) → 10x+(x%10)+1
Ce sera. Si vous implémentez ceci
from collections import deque
k = int(input())
lun = deque([])
for i in range(1,10):
lun.append(i)
for i in range(k):
x = lun.popleft()
if x % 10 != 0:
lun.append(10*x+(x%10)-1)
lun.append(10*x+x%10)
if x % 10 != 9:
lun.append(10*x+(x%10)+1)
print(x)
J'utilise deque car je n'accède qu'aux deux extrémités des données
Je voulais le résoudre en production. Je ne suis pas doué pour les calculs en utilisant le reste, je vais donc m'entraîner autour du problème des nombres entiers. à plus.
Recommended Posts