Maison > développement back-end > C++ > Trouver récursivement la somme des chiffres de n^x, où n et x sont tous deux très grands, implémenté en C++

Trouver récursivement la somme des chiffres de n^x, où n et x sont tous deux très grands, implémenté en C++

WBOY
Libérer: 2023-09-11 08:29:02
avant
766 Les gens l'ont consulté

Trouver récursivement la somme des chiffres de n^x, où n et x sont tous deux très grands, implémenté en C++

On nous donne des variables entières positives "num" et "x". La tâche consiste à calculer de manière récursive num ^ x, puis à ajouter les chiffres des nombres résultants jusqu'à ce qu'ils atteignent un chiffre, les chiffres résultants seront donnés en sortie.

Regardons différents scénarios d'entrée-sortie pour cela -

Entrée − int num = 2345, int x = 3

Sortie − Somme récursive ^x des nombres dans n , où n et x sont très grands : 8

Explication− On nous donne des valeurs entières positives num et x avec la valeur 2345 et la puissance 3. Tout d’abord, calculez 2345^3, soit 12 895 213 625. Maintenant, nous additionnons ces nombres, qui sont 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5, soit 44. Nous allons maintenant ajouter 4 + 4, ce qui fait 8. Puisque nous avons atteint un chiffre, le résultat est 8.

Entrée− int num = 3, int x = 3

Sortie − Somme récursive des nombres dans n^x, où n et x sont très grands : 9

Explication− On nous donne des entiers positifs Les valeurs num et x, la valeur est 3 et la puissance est 3. Calculez d'abord 3^3, soit 9. Puisque nous avons déjà les chiffres à un chiffre, le résultat est 9 et aucun autre calcul n’est nécessaire.

La méthode utilisée dans le programme ci-dessous est la suivante

  • Entrez les variables entières num et x et transmettez les données à la fonction Recursive_Digit(num, x) pour un traitement ultérieur.

  • À l'intérieur de la fonction Recursive_Digit(num, x)
    • déclarez la variable 'total' aussi longue et configurez-la pour appeler la fonction total_digits(num) qui renverra la somme numérique des nombres passés en arguments.

    • Déclarez la variable comme temp de type long et définissez-la avec un % de puissance de 6

    • Vérifiez SI Total = 3 OU Total = 6 ET puissance > 1 et renvoyez 9.

    • ELSE SI, puissance = 1, puis renvoie Total.

    • li>
    • ELSE SI, puissance = 0 et retour 1.

    • ELSE IF, temp - 0 Puis revenez en appelant total_digits((long)pow(total, 6))

    • Sinon, retournez total_digits((long)pow(total, temp)).

  • Fonction interne long Total_digits(long num)

    • vérifie SI num = 0 et renvoie 0. Vérifiez SI, num % 9 = 0 et renvoyez 9.

    • Sinon, renvoie num % 9

  • Exemple H2>
    #include <bits/stdc++.h>
    using namespace std;
    long total_digits(long num){
       if(num == 0){
          return 0;
       }
       if(num % 9 == 0){
          return 9;
       }
       else{
          return num % 9;
       }
    }
    long Recursive_Digit(long num, long power){
       long total = total_digits(num);
       long temp = power % 6;
       if((total == 3 || total == 6) & power > 1){
          return 9;
       }
       else if (power == 1){
          return total;
       }
       else if (power == 0){
          return 1;
       }
       else if (temp == 0){
          return total_digits((long)pow(total, 6));
       }
       else{
          return total_digits((long)pow(total, temp));
       }
    }
    int main(){
       int num = 2345;
       int x = 98754;
       cout<<"Recursive sum of digit in n^x, where n and x are very large are: "<<Recursive_Digit(num, x);
       return 0;
    }
    Copier après la connexion

    Output

    Si nous exécutons le code ci-dessus, il générera la sortie suivante

    Recursive sum of digit in n^x, where n and x are very large are: 1
    Copier après la connexion

    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!

    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
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal