首頁 >後端開發 >C++ >遞歸求n^x的各位數字之和,其中n和x都非常大,使用C++實現

遞歸求n^x的各位數字之和,其中n和x都非常大,使用C++實現

WBOY
WBOY轉載
2023-09-11 08:29:02772瀏覽

遞歸求n^x的各位數字之和,其中n和x都非常大,使用C++實現

我們被賦予正整數變數「num」和「x」。任務是遞歸計算 num ^ x,然後將所得數字的數字相加,直到達到個位數為止,所得的個位數將作為輸出。

讓我們看看各種輸入輸出場景為此-

輸入 − int num = 2345, int x = 3

#輸出 − n 中數字的遞歸和^x,其中n 和x 非常大: 8

解釋− 我們給出正整數值num 和x,值為2345,冪為3。首先,計算 2345 ^ 3 即 12,895,213,625。現在,我們將這些數字相加,即 1 2 8 9 5 2 1 3 6 2 5,即 44。現在我們將新增 4 4,即 8。由於我們已經達到了個位數,因此,輸出為 8。

輸入− int num = 3, int x = 3

#輸出 − 數字的遞迴和在n^x 中,其中n 和x 非常大: 9

解釋− 我們給出正整數值num 和x,值為3,冪為3 . 先計算3 ^ 3,即9。由於我們已經得到了個位數,因此輸出為9,不需要進一步計算。

下面程式中使用的方法如下

  • 輸入整數變數 num 和 x,並將資料傳遞給函數 Recursive_Digit(num, x) 進行進一步處理。

  • 在函數Recursive_Digit(num, x) 內
    • 將變數'total' 宣告為long 並將其設定為呼叫函數total_digits( num),函數將傳回作為參數傳遞的數字的數字和。

    • 將變數宣告為long 類型的temp 並使用% 6 的冪設定它

    • 檢查IF Total = 3 OR Total = 6 AND power > 1,然後回傳9。

    • ELSE IF,power = 1,然後回傳 Total。

    • li>
    • ELSE IF, power = 0 然後回傳 1。

    • ELSE IF, temp - 0 然後回傳呼叫total_digits((long)pow(total , 6))

    • 否則,傳回total_digits( (long)pow(total, temp))。

  • 函數內部 long Total_digits(long num)

    • 檢查 IF num = 0,然後傳回 0。檢查 IF,num % 9 = 0然後回傳 9。

    • 否則,傳回num % 9

  • #範例 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;
    }

    輸出

    如果我們執行上面的程式碼,它將產生以下輸出

    Recursive sum of digit in n^x, where n and x are very large are: 1

    以上是遞歸求n^x的各位數字之和,其中n和x都非常大,使用C++實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除