C ++プログラムで指定された大きな整数のデジタルルート(繰り返されるデジタル合計)
このチュートリアルでは、特定の数値の数字根を見つける方法を学習します。
数字根は、桁数の合計です(桁の合計が1桁になるまで)。
文字列形式の整数が与えられます。そして、合計が1桁になるまで、桁の合計を繰り返し見つける必要があります。
問題を解決するための手順を見てみましょう。
-
文字列形式で整数を初期化します。
-
数値を繰り返し、各桁を合計変数に追加します。
-
合計が0の場合は、0を出力します。
-
それ以外の場合、合計が9で割り切れる場合、答えは9です。
-
それ以外の場合、答えは9を法とする合計です。
例
コードを見てみましょう。
#include<bits/stdc++.h> using namespace std; int digitalRoot(string n) { int digitsSum = 0; for (int i = 0; i < n.length(); i++) { digitsSum += n[i] - '0'; } if (digitsSum == 0) { return 0; } return digitsSum % 9 == 0 ? 9 : digitsSum % 9; } int main() { string n = "12345"; cout << digitalRoot(n) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
6
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
サブツリーがC++プログラムのBSTでもあるようなバイナリツリーの最大サブツリー合計
この問題では、二分木BTが与えられます。私たちのタスクは、サブツリーがBSTでもあるように、バイナリツリーの最大サブツリー合計を見つけるプログラムを作成することです。 二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 二分探索木は、すべてのノードが以下のプロパティに従うツリーです 左側のサブツリーのキーの値は、その親(ルート)ノードのキーの値よりも小さくなっています。 右側のサブツリーのキーの値は、その親(ルート)ノードのキーの値以上です。 問題を理解するために例を見てみましょう 入力 出力 32 説明 ここでは、BS
-
C++で最も深いノードの合計を見つけるプログラム
二分木があるとしましょう。その最も深い葉の値の合計を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は11になります。 これを解決するには、次の手順に従います- マップmとmaxDepthを定義します 再帰メソッドsolve()を定義します。これはノードとレベルを取り、最初はレベルは0です ノードが存在しない場合は、戻ります maxDepth:=レベルの最大値とmaxDepth ノードの値だけm[レベル]を増やします 解決(ノードの左側、レベル+ 1) 解決(ノードの右側、レベル+ 1) mainメソッドで