Maison > Article > développement back-end > Des produits numériques complets
Étant donné deux nombres, notre tâche est de savoir si le nombre donné est obtenu en multipliant les deux autres nombres de telle sorte que les trois nombres forment ensemble un nombre panoramique à 9 chiffres.
En d'autres termes, on peut dire que nous devons découvrir si un nombre donné, lorsqu'il est combiné avec deux autres nombres, forme une opération de multiplication pour obtenir le nombre complet du nombre d'origine.
Nous pouvons rencontrer de nombreuses situations dans lesquelles nous obtiendrons plusieurs solutions au problème et pour obtenir la meilleure complexité temporelle, nous imprimerons simplement la première solution trouvée et arrêterons le processus itératif.
Solution : discutons d'abord de ce qu'est un nombre à chiffres complets -
Un numéro à n chiffres est appelé numéro panoramique si et seulement s'il utilise tous les chiffres de 1 à n exactement une fois. Autrement dit, le nombre peut être représenté comme une permutation de tous les nombres de 1 à n en utilisant un seul chiffre à la fois.
Par exemple, 6745312 est un numéro de panoramique à 7 chiffres car il utilise tous les chiffres de 1 à 7
Comprenons maintenant ce problème avec quelques exemples -
Given Number: 7254 Result obtained: Yes, the condition is true
Comme nous le savons tous, 7254 peut être exprimé comme le produit de 39 et 186.
En additionnant 39, 186 et 7254, nous obtenons 391867254, qui contient tous les nombres de 1 à 9. Chaque nombre n'est utilisé qu'une seule fois, c'est-à-dire qu'il s'agit d'un nombre complet composé de 9 chiffres.
Given Number: 6952 Result obtained: Yes, the condition is true
Maintenant, discutons des moyens de résoudre ce problème−
Nous vérifions d'abord en trouvant toutes les paires de nombres dont le produit est égal à un nombre donné. Ensuite, pour chaque paire possible de nombres solutions, nous créerons une chaîne et stockerons les trois nombres (le nombre d’origine et les deux facteurs qui font que le produit est ce nombre).
Trouvons maintenant un algorithme fonctionnel pour notre solution.
Étape 1 - Parcourez la boucle pour vérifier toutes les paires de facteurs pour ce nombre.
Étape 2 − Pour chaque partie des facteurs, nous créerons une chaîne contenant le nombre d'origine et les deux facteurs.
Étape 3 - Triez la chaîne formée à l'aide de la fonction sort().
Étape 4 - Nous allons maintenant créer une autre chaîne "123456789"
Étape 5 - Comparez les deux chaînes et renvoyez vrai si elles sont identiques.
Le code de cette méthode est le suivant -
#include <bits/stdc++.h> using namespace std; // this function checks whether the given string consist of pandigital numbers bool Is_Pandigital_product (string Original_string) { if ( Original_string.length() != 9 ) { return false; } char c[Original_string.length()]; strcpy(c, Original_string.c_str()); sort(c, c + Original_string.length()); string new_string = c; if(new_string.compare("123456789") == 0) // comparing both the strings { return true; } else { return true; } } bool PandigitalProduct_1_9(int num) // This function iterates over a loop till Sqrt(n) and searches for factors of given input. // for each factor, this loop calls for Is_Pandigital_product function { for (int Iterator = 1; Iterator * Iterator <= num; Iterator++) if (num % Iterator == 0 && Is_Pandigital_product(to_string(num) + to_string(Iterator) + to_string(num / Iterator))) return true; //Returns true if found pandigital number return false; } int main() { int num = 1234; if (PandigitalProduct_1_9(num) == true) cout << "yes the number " << num << " is a pandigital product"; else cout << "no the number " << num <<" is not a pandigital product"; return 0; }
yes the number 1234 is a pandigital product
Complexité temporelle - Puisque nous utilisons une seule boucle itérant de 1 à sqrt(n) , la complexité temporelle de cette solution sera O(N^1/2)
Complexité spatiale - Puisque le code ne nécessite aucune mémoire supplémentaire, la complexité spatiale est linéaire, c'est-à-dire O(1).
Dans cet article, nous étudions ce qu'est un nombre entier et un moyen efficace de savoir si un nombre donné et ses facteurs (paires) donnent un nombre entier à 9 chiffres lorsqu'ils sont combinés en une chaîne après multiplication du nombre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!