recherche
Maisondéveloppement back-endC++Comptez le nombre de nombres à N chiffres qui n'ont pas de préfixe donné

Comptez le nombre de nombres à N chiffres qui nont pas de préfixe donné

Le problème ici est de déterminer le nombre total de caractères « 0 » à « 9 » contenus dans une chaîne de longueur N, en fournissant un entier N et un tableau de préfixes de chaîne pre[] tel qu'il n'y en ait aucun dans ceux-ci. chaînes Un contenant le préfixe fourni. Le but de cet article est d'implémenter un programme qui trouve le nombre de nombres à N chiffres qui n'ont pas de préfixe donné.

En langage de programmation C, un ensemble de chaînes distinctes est appelé un tableau car un tableau est une combinaison linéaire d'un ensemble d'éléments de données de type similaire.

Comme nous le savons déjà, la chaîne est un tableau unidimensionnel caractère par caractère qui se termine par un caractère vide ou nul.

Exemple Exemple 1

Supposons l'entrée N = 2,

The given prefix, pre = {“1”}
Output obtained: 90

Explication

Ici, sauf {"01", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", Tous Les chaînes à 2 chiffres sauf "21", "31", "41", "51", "61", "71", "81", "91"} sont valides.

Exemple Exemple 2

Prenons la valeur d'entrée N = 3 comme exemple.

The given prefix, pre = {“56”}
Output obtained: 990

Explication

Ici, tout sauf {"560", "561", "562", "563", "564", "565", "566", "567", "568", "569"} chaînes à 3 chiffres sont tous valables.

Exemple Exemple 3

Regardons une entrée N = 1,

The given prefix, pre = {“6”}
Output obtained: 9

Explication

Toutes les chaînes à 1 chiffre ici sont valides sauf {"6"}.

Énoncé du problème

Implémentez un programme pour trouver le nombre de N chiffres qui n'ont pas de préfixe donné.

Méthode

Pour trouver le nombre de N chiffres sans donner de préfixe donné, on utilise la méthode suivante.

Solution à ce problème et trouver le chemin vers N nombre de chiffres qui n'a pas le préfixe donné

Considérant qu'il existe 10 options de caractères pour chaque position dans la chaîne, il y a (10N) chaînes potentielles au total. Au lieu de compter le nombre total de chaînes souhaitées, soustrayez le nombre total de chaînes dont vous ne voulez pas. La fusion de préfixes avec les mêmes caractères initiaux en un préfixe plus long avant l'itération peut entraîner la suppression de certains doublons.

Algorithme

Algorithme de recherche pour compter N chiffres qui n'ont pas le préfixe donné suivant

  • Première étape − Démarrer

  • Étape 2 - Définir une fonction pour compter le nombre total de chaînes de longueur N qui ne contiennent pas le préfixe donné

  • Étape 3 - Calculez le nombre total de chaînes existantes

  • Étape 4 - Créez un tableau et les compteurs a et aCount et insérez-y ces préfixes

  • Étape 5 − Créez un nouveau tableau de chaînes de préfixes

  • Étape 6 - Itérer pour chaque personnage de départ

  • Étape 7 - Parcourez le tableau pour calculer le préfixe de taille minimale

  • Étape 8 - Maintenant, mettez tous ces préfixes minimaux dans un nouveau tableau de préfixes

  • Étape 9 - Itérer sur de nouveaux préfixes

  • Étape 10 - Déduire les chaînes indésirables

  • Étape 11 − Imprimez les résultats obtenus

  • Étape 12 − Arrêtez

Exemple : programme C

Il s'agit d'une implémentation de programme C de l'algorithme ci-dessus pour trouver le nombre de N chiffres qui n'ont pas de préfixe donné.

#include <stdio.h>
#include <math.h>
#include <string.h>
#define MAX_LENGTH 10

// Function to calculate total strings of length N without the given prefixes
int totalStrings(int N, char pre[][MAX_LENGTH], int pre_Count){

   // Calculate total strings present
   int total = (int)(pow(10, N) + 0.5);
   
   // Make an array and counter a and aCount respectively and insert these prefixes with same character in the array
   char a[10][MAX_LENGTH];
   int aCount[10] = {0};
   for (int i = 0; i < pre_Count; i++)    {
      int index = pre[i][0] - '0';
      strcpy(a[index] + aCount[index] * MAX_LENGTH, pre[i]);
      aCount[index]++;
   }
   
   // Make a new array of prefixes strings
   char new_pre[pre_Count][MAX_LENGTH];
   int new_pre_count = 0;
   
   // Iterating for  each of the starting //character
   for (int x = 0; x < 10; x++){
      int m = N;
      
      // Iterate over the array to calculate minimum size prefix
      for (int j = 0; j < aCount[x]; j++){
         int p_length = strlen(a[x] + j * MAX_LENGTH);
         m = (m < p_length) ? m : p_length;
      }
      
      // now take all these minimum prefixes in the new array of prefixes
      for (int j = 0; j < aCount[x]; j++){
         int p_length = strlen(a[x] + j * MAX_LENGTH);
         if (p_length <= m){
            strcpy(new_pre[new_pre_count], a[x] + j * MAX_LENGTH);
            new_pre_count++;
         }
      }
   }
   
   // Iterating through the new prefixes
   for (int i = 0; i < new_pre_count; i++){
   
      // Subtract the unwanted strings
      total -= (int)(pow(10, N - strlen(new_pre[i])) + 0.5);
   }
   return total;
}

// The main function
int main(){
   int N = 5;
   char pre[][MAX_LENGTH] = {"1", "0", "2"};
   int pre_Count = sizeof(pre) / sizeof(pre[0]);
   printf("%d\n", totalStrings(N, pre, pre_Count));
   return 0;
}

Sortie

70000

Conclusion

De même, nous pouvons trouver le nombre de N chiffres qui n'ont pas le préfixe donné.

Dans cet article, le défi consistant à faire en sorte qu'un programme trouve un nombre à N chiffres qui n'a pas de préfixe donné est résolu.

Le code de programmation C est fourni ici avec l'algorithme pour trouver le nombre de nombres à N chiffres qui n'ont pas de préfixe donné.

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!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Cibliothèques C XML: Comparaison et options contrastéesCibliothèques C XML: Comparaison et options contrastéesApr 22, 2025 am 12:05 AM

Il existe quatre bibliothèques XML couramment utilisées dans C: TinyXML-2, PUGIXML, XERCES-C et RapidXML. 1.Tinyxml-2 convient aux environnements avec des ressources limitées, des fonctions légères mais limitées. 2. PUGIXML est rapide et prend en charge la requête XPath, adaptée aux structures XML complexes. 3.xerces-C est puissant, prend en charge la résolution DOM et SAX et convient au traitement complexe. 4. RapidXML se concentre sur les performances et les analyses extrêmement rapidement, mais ne prend pas en charge les requêtes XPath.

C et XML: Explorer la relation et le soutienC et XML: Explorer la relation et le soutienApr 21, 2025 am 12:02 AM

C interagit avec XML via des bibliothèques tierces (telles que TinyXML, PUGIXML, XERCES-C). 1) Utilisez la bibliothèque pour analyser les fichiers XML et les convertir en structures de données propices à C. 2) Lors de la génération de XML, convertissez la structure des données C au format XML. 3) Dans les applications pratiques, le XML est souvent utilisé pour les fichiers de configuration et l'échange de données afin d'améliorer l'efficacité du développement.

C # vs C: Comprendre les principales différences et similitudesC # vs C: Comprendre les principales différences et similitudesApr 20, 2025 am 12:03 AM

Les principales différences entre C # et C sont la syntaxe, les performances et les scénarios d'application. 1) La syntaxe C # est plus concise, prend en charge la collection des ordures et convient au développement .NET Framework. 2) C a des performances plus élevées et nécessite une gestion manuelle de la mémoire, qui est souvent utilisée dans la programmation système et le développement de jeux.

C # vs C: Histoire, évolution et perspectives d'avenirC # vs C: Histoire, évolution et perspectives d'avenirApr 19, 2025 am 12:07 AM

L'histoire et l'évolution de C # et C sont uniques, et les perspectives d'avenir sont également différentes. 1.C a été inventé par Bjarnestrousstrup en 1983 pour introduire une programmation orientée objet dans le langage C. Son processus d'évolution comprend plusieurs normalisations, telles que C 11, introduisant des mots clés automobiles et des expressions de lambda, C 20 introduisant les concepts et les coroutines, et se concentrera sur les performances et la programmation au niveau du système à l'avenir. 2.C # a été publié par Microsoft en 2000. Combinant les avantages de C et Java, son évolution se concentre sur la simplicité et la productivité. Par exemple, C # 2.0 a introduit les génériques et C # 5.0 a introduit la programmation asynchrone, qui se concentrera sur la productivité et le cloud computing des développeurs à l'avenir.

C # vs C: courbes d'apprentissage et expérience du développeurC # vs C: courbes d'apprentissage et expérience du développeurApr 18, 2025 am 12:13 AM

Il existe des différences significatives dans les courbes d'apprentissage de l'expérience C # et C et du développeur. 1) La courbe d'apprentissage de C # est relativement plate et convient au développement rapide et aux applications au niveau de l'entreprise. 2) La courbe d'apprentissage de C est raide et convient aux scénarios de contrôle haute performance et de bas niveau.

C # vs C: programmation et fonctionnalités orientées objetC # vs C: programmation et fonctionnalités orientées objetApr 17, 2025 am 12:02 AM

Il existe des différences significatives dans la façon dont C # et C implémentent et les fonctionnalités de la programmation orientée objet (POO). 1) La définition de classe et la syntaxe de C # sont plus concises et prennent en charge des fonctionnalités avancées telles que LINQ. 2) C fournit un contrôle granulaire plus fin, adapté à la programmation système et aux besoins élevés de performance. Les deux ont leurs propres avantages et le choix doit être basé sur le scénario d'application spécifique.

De XML à C: transformation et manipulation des donnéesDe XML à C: transformation et manipulation des donnéesApr 16, 2025 am 12:08 AM

La conversion de XML en C et la réalisation des opérations de données peuvent être réalisées via les étapes suivantes: 1) Analyser des fichiers XML à l'aide de la bibliothèque TinyxML2, 2) Mappage des données en structure de données de C, 3) à l'aide de la bibliothèque standard C telle que STD :: vector pour les opérations de données. Grâce à ces étapes, les données converties à partir de XML peuvent être traitées et manipulées efficacement.

C # vs C: Gestion de la mémoire et collecte des orduresC # vs C: Gestion de la mémoire et collecte des orduresApr 15, 2025 am 12:16 AM

C # utilise le mécanisme de collecte automatique des ordures, tandis que C utilise la gestion manuelle de la mémoire. 1. Le collecteur des ordures de C # gère automatiquement la mémoire pour réduire le risque de fuite de mémoire, mais peut entraîner une dégradation des performances. 2.C fournit un contrôle de mémoire flexible, adapté aux applications qui nécessitent une gestion des beaux, mais doivent être manipulées avec prudence pour éviter les fuites de mémoire.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP