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++

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-09-11 08:29:02
avant
818 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!

    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