Calculez le code acsall de AZ via la formule et convertissez-le en 1-26

Avant-propos :

Lorsque je travaillais sur une question récemment, j'ai soudainement vu un petit trou dans la question où la majuscule AZ était convertie en nombre de 1 à 26. J'ai senti que la méthode simple était trop ennuyeuse, alors j'ai pensé à une nouvelle méthode pour résolvez-le, ce qui peut être relativement inutile. Facile, mais je sentais que la réflexion à ce moment-là était plus importante, alors j'ai écrit un blog pour l'enregistrer.

Idée générale:

À ce moment-là, je réfléchissais à la façon de convertir le code ascall de A en 1, et je pensais que 65%8==1, j'ai donc pensé que l'opération restante pouvait être utilisée, donc Get_ans%8 dans le code était terminé, mais cette étape est limitée à La conversion du code d'appel en une lettre avec une plage de numéros de 1 à 9 est applicable, car l'étape "Get_ans%8" consiste à trouver le chiffre unique du nombre de 1 à 26, alors comment faire trouver le chiffre des dizaines ? Je pense que c'est un point positif, permettez-moi d'en parler en détail.

Idées spécifiques pour trouver les chiffres des dizaines :

65=8*8, puis 65/8 est arrondi à 8, voici le code d'appel 65 de A à titre d'exemple. Le 1 converti de 65 peut être considéré comme 01. Bien que les mathématiques soient théoriquement impossibles du tout, il s'agit de programmation (au diable les mathématiques de votre oncle). Ensuite, je peux utiliser la formule "8=65/8-8"*8 pour le 0 dans le chiffre des dizaines de 01. Concernant la raison pour laquelle 65/8, j'en ai déjà parlé en détail auparavant, et ici je me concentrerai sur l'explication des opérations en deux étapes de -8 et *8. -8 est parce que mon A est déjà la plus petite des 26 lettres, et le quotient 8 de 65/8 du code d'appel converti est déjà le plus petit des codes d'appel convertis à partir des 26 lettres, car le chiffre des dizaines est 01, donc mon 8 doit être soustrait. L'étape "*8" est préparée pour les uu qui ont entre 10 et 26 ans lorsque le code d'appel est converti en nombre. Contrairement à 1-9, ils n'ont pas de nombre sur le chiffre des dizaines, mais il y a deux possibilités de 1 et 2, j'ai donc besoin de *8 pour composer les dix chiffres. Pourquoi dois-je multiplier par 8 ici ? Parce que j'ai utilisé 8 pour effectuer toutes les opérations de reste auparavant, je ne peux et dois donc utiliser que 8 pour effectuer des calculs.

En parlant de ça, la compréhension de la formule est à peu près terminée et le code est collé au hasard :

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
	int Get_ans;
	cin>>Get_ans;
	cout<<(Get_ans/8-8)*8+(Get_ans%8)<<endl;
	return 0;
}

Vous pouvez le prendre pour un test. Le code d'appel de AZ est 65-90. Ce code peut parfaitement calculer le résultat sans aucune erreur. Cependant, ce code ne peut résoudre que le problème de la conversion de AZ en 1-26. Bien qu'il ne soit pas C'est plus simple que certaines méthodes. Réfléchir est plus difficile, comprendre est plus important.

La création n’est pas facile, ne vous prostituez pas ! Veuillez donner trois liens + attention ! Merci 

Guess you like

Origin blog.csdn.net/2301_76331300/article/details/131775874