J'ai essayé de résoudre le problème 755 C d'AtCoder en Python. C'est un problème facile à résoudre à l'aide d'une fonction récursive.
J'ai fait référence à un article de M. Kencho, qui est bien connu dans le monde de la programmation compétitive japonaise. Article de référence: https://drken1215.hatenablog.com/entry/2019/04/03/125400
C'est toujours gênant, j'ai donc eu du mal à comprendre la différence entre un opérateur logique et un opérateur de bits. Cliquez ici pour les articles qui m'ont aidé à les comprendre ↓ http://ings.sakura.ne.jp/prog/bitoperator.html
N = int(input())
def func(cur, use, counter):
if cur > N: return
if use == 0b111: counter.append(1) #Augmentez la réponse
#Ajouter 7
func(cur * 10 + 7, use | 0b001, counter)
#Ajouter 5
func(cur * 10 + 5, use | 0b010, counter)
#Ajouter 3
func(cur * 10 + 3, use | 0b100, counter)
res = []
func(0, 0, res)
print(sum(res))
Le résultat ressemble à ceci. J'ai pu AC en toute sécurité.
Recommended Posts