Maison> développement back-end> C++> le corps du texte

Des produits numériques complets

WBOY
Libérer: 2023-09-19 13:09:10
avant
866 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

Méthode

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.

Exemple

Le code de cette méthode est le suivant -

#include  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; }
Copier après la connexion

Sortie

yes the number 1234 is a pandigital product
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!