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
WBOYavant
2023-09-11 08:29:02763parcourir

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;
    }

    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

    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