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を追加します。 、出力は8です。
入力 − int num =3、int x =3
出力 − n ^ xの桁の再帰的な合計。ここで、nとxは非常に大きいです:9
説明 − numおよびxとして正の整数値が与えられ、値は3、累乗は3です。最初に3 ^ 3、つまり9を計算します。したがって、1桁を達成したため、出力は9であり、それ以上の計算は必要ありません。
以下のプログラムで使用されているアプローチは次のとおりです
-
整数変数をnumおよびxとして入力し、さらに処理するためにデータを関数Recursive_Digit(num、x)に渡します。
-
関数Recursive_Digit(num、x)
の内部-
変数「total」をlongとして宣言し、引数として渡された数値の桁の合計を返す関数total_digits(num)を呼び出すように設定します。
-
変数をlong型のtempとして宣言し、power%6で設定します
-
IF total =3 OR total =6 AND power> 1を確認してから、9を返します。
-
それ以外の場合、電力=1の場合、合計を返します。
-
ELSE IF、power =0の場合、1を返します。
-
ELSE IF、temp-0次に、total_digits((long)pow(total、6))
への呼び出しを返します。 -
ELSE、return total_digits((long)pow(total、temp))。
-
-
関数内longtotal_digits(long num)
-
IF num =0をチェックしてから0を返します。IF、num%9 =0をチェックしてから、9を返します。
-
それ以外の場合は、num%9を返します
-
例
#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
-
合計とGCDがC++で与えられている2つの数値を見つけます
2つの数aとbの合計とgcdがあります。数字aとbの両方を見つける必要があります。それが不可能な場合は、-1を返します。合計が6でgcdが2であるとすると、数値は4と2になります。 このアプローチは、GCDが与えられると、その数がその倍数になることが知られているようなものです。次の手順があります 最初の数値をGCDとして選択すると、2番目の数値はsum − GCDになります。 前の手順で選択した数値の合計が合計と同じである場合は、両方の数値を出力します。 それ以外の場合は、数値が存在しないため、-1を出力します。 例 #include <iostream>
-
C ++でのコピーの省略と戻り値の最適化とは何ですか?
コピーの省略は、コピーの省略とも呼ばれます。これは、コンパイラの最適化手法の1つです。オブジェクトの不要なコピーを回避します。現在のほとんどのコンパイラは、このCopyElision手法を使用しています。 1つのサンプルコードを使用して、どのように機能するかを見てみましょう。 サンプルコード #include <iostream> using namespace std; class MyClass { public: MyClass(const char* str = "\0") { //default constructor cou