Ecrire une méthode de cupidité simple en Python

Méthode gourmande

La méthode gourmande est une méthode dans laquelle un certain standard est établi et la solution optimale est sélectionnée en continu sur place pour trouver la solution optimale. Je pense que c'est efficace pour trouver la solution optimale dans une certaine mesure en peu de temps. Puisque la méthode de la cupidité elle-même est utilisée dans un sens large, il est difficile de l'utiliser dans de tels cas, mais personnellement

Je pense qu'il peut être utilisé à tout moment.

Ce problème

AtCoder B --Magic 2 sera résolu par la méthode gourmande.

** Énoncé du problème ** M. M a les trois cartes suivantes.

-Carte rouge avec un entier A écrit dessus -Carte verte avec un entier B écrit dessus

Puisqu'il est un magicien de génie, il peut effectuer les opérations suivantes jusqu'à K fois.

--Choisissez l'une des trois cartes et doublez l'entier écrit.

Après avoir effectué l'opération, si les conditions suivantes sont remplies en même temps, la magie est réussie.

Déterminez si vous pouvez réussir dans la magie.

** Contraintes **

En bref, il est considéré que vous devriez obtenir «rouge <vert» et «vert <bleu» en K fois. Dans ce problème, la condition peut être remplie si «le nombre de fois que le vert est doublé en rouge» + «le nombre de fois que le bleu est doublé pour dépasser le vert» est inférieur ou égal à K.

Si vous dites «fixer une valeur» plus tôt, ce problème

--Fixez la valeur rouge pour comparaison

Je pense que ce sera plus facile à résoudre.

Ta Réponse

B-Magic2.py


nums = input().split() #A,B,Entrez C

A = int(nums[0])
B = int(nums[1])
C = int(nums[2])

K = input() #Entrez K
k = int(K)

cnt = 0 #Si le nombre de fois est inférieur à k, la magie réussira, définissez donc l'entier cnt pour comparaison

while A >= B: #Enregistrez le nombre de fois où B est doublé et devient A ou plus
    cnt += 1
    B *= 2

while B >= C:  #Enregistrez le nombre de fois où C est doublé et devient B ou plus
    cnt += 1
    C *= 2


if cnt <= k:
    print("Yes")
else:
    print("No")


7 4 2    #A,B,Entrée C
3        #Entrée K
No       #production

À la fin (rédaction de notes)

Quand cela devient un problème difficile avec AtCoder, même si je transfère les conditions du problème telles quelles, je ne peux pas atteindre la réponse, alors j'ai pensé que la capacité de lecture et la capacité de réflexion mathématique du problème étaient nécessaires. J'ai l'impression d'ignorer le japonais jusqu'au lycée. Oh, je veux des capacités de lecture ...

Article de référence

https://studyhacker.net/reading-comprehension

https://www.naganomathblog.com/entry/2018/08/21/071918

Recommended Posts

Ecrire une méthode de cupidité simple en Python
Ecrire des algorithmes A * (A-star) en Python
Implémentation d'un algorithme simple en Python 2
Exécutez un algorithme simple en Python
Ecrire un plugin Vim simple en Python 3
Ecrire un programme de dynamique moléculaire super simple en python
Ecrire une dichotomie en Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Il est difficile d'écrire un algorithme très simple en php
Un client HTTP simple implémenté en Python
Ecrire le test dans la docstring python
Essayez de dessiner une animation simple en Python
Ecrire une courte définition de propriété en Python
Ecrire un programme de chiffrement Caesar en Python
Algorithme A * (édition Python)
GRPC simple en Python
Algorithme génétique en python
Ecrire Python dans MySQL
Algorithme en Python (méthode Bellman-Ford, Bellman-Ford)
Algorithme en Python (Dijkstra)
Configurer un serveur HTTPS simple avec Python 3
Notes de programme simples Pub / Sub en Python
Créer un modèle d'investissement dynamique simple en Python
Configurer un serveur SMTP simple en Python
Prendre une capture d'écran en Python
Informations de base Écrire le problème d'algorithme de l'automne 2018 en Python
Ecrire des filtres Pandec en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Écrire une distribution bêta en Python
Algorithme en Python (jugement premier)
Ecrire python dans Rstudio (réticulé)
Je veux écrire en Python! (2) Écrivons un test
Créez un Slackbot simple avec un bouton interactif en python
Reproduire la méthode de division mutuelle euclidienne en Python
Algorithme en Python (dichotomie)
Créer un bookmarklet en Python
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Analyse de régression simple avec Python
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
Implémenter l'algorithme de Dijkstra en python
Dessinez un cœur en Python
Client IRC simple avec python
J'ai fait un jeu de frappe simple avec tkinter de Python
Un moyen simple d'éviter plusieurs boucles for en Python
Algorithme en Python (recherche de priorité de largeur, bfs)
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
[python] Gérer les fonctions dans une liste
Première analyse de régression simple en Python
Appuyez sur une commande en Python (Windows)
OAuth 2 simple avec Python (urllib + oauthlib)
Algorithme de tri et implémentation en Python
Créer un conteneur DI avec Python
Dessinez une matrice de diagramme de dispersion avec python
Ecrire une fonction AWS Lambda en Python
ABC166 en Python A ~ C problème
Développons un algorithme d'investissement avec Python 2
Créer un fichier binaire en Python