ホームページ  >  記事  >  バックエンド開発  >  n^x の桁の合計を再帰的に求めます。n と x は両方とも非常に大きく、C++ を使用して実装されます。

n^x の桁の合計を再帰的に求めます。n と x は両方とも非常に大きく、C++ を使用して実装されます。

WBOY
WBOY転載
2023-09-11 08:29:02745ブラウズ

n^x の桁の合計を再帰的に求めます。n と x は両方とも非常に大きく、C++ を使用して実装されます。

正の整数変数「num」と「x」が与えられています。このタスクは、num^x を再帰的に計算し、結果の数値を 1 桁に達するまで加算することです。結果の 1 桁が出力として与えられます。

このためのさまざまな入出力シナリオを見てみましょう -

入力 - 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 になります。 1 桁に達したため、出力は 8 になります。

入力 - int num = 3, int x = 3

出力 - n^x の数値の再帰的合計 (n とx は非常に大きい: 9

説明- 値 3 と累乗 3 を持つ正の整数値 num と x が与えられます。 まず 3^3、つまり 9 を計算します。すでに 1 桁を取得しているため、出力は 9 となり、これ以上の計算は必要ありません。

以下のプログラムで使用されるメソッドは次のとおりです。

  • 整数変数 num と x を入力し、データを関数 Recursive_Digit(num, x) に渡します。処理。

  • 関数 Recursive_Digit(num, x) 内で
    • #変数 'total' を長さとして宣言し、関数 total_digits( num)、この関数は引数として渡された数値の合計を返します。

    • 変数をlong型のtempとして宣言し、6の%べき乗を使用して設定します。

    • Check IF Total = 3 OR Total = 6 ANDべき乗 > 1 の場合は 9 を返します。

    • ELSE IF、power = 1 の場合、Total を返します。

      li>
    • ELSE IF、power = 0 の場合は 1 を返します。

    • ELSE IF, temp - 0 その後、total_digits((long)pow(total, 6)) の呼び出しに戻ります

    • それ以外の場合は return total_digits( (long)pow(合計, 温度))。

  • 内部関数long Total_digits(long num)

    • IF num = 0をチェックし、0を返します。 IF、num % 9 = 0 を確認し、9 を返します。

    • # それ以外の場合は、num % 9を返します
    ##Example
  • #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

    H2>上記のコードを実行すると、次の出力が生成されます

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

    以上がn^x の桁の合計を再帰的に求めます。n と x は両方とも非常に大きく、C++ を使用して実装されます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。