C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. サブツリーがC++プログラムのBSTでもあるようなバイナリツリーの最大サブツリー合計

    この問題では、二分木BTが与えられます。私たちのタスクは、サブツリーがBSTでもあるように、バイナリツリーの最大サブツリー合計を見つけるプログラムを作成することです。 二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 二分探索木は、すべてのノードが以下のプロパティに従うツリーです 左側のサブツリーのキーの値は、その親(ルート)ノードのキーの値よりも小さくなっています。 右側のサブツリーのキーの値は、その親(ルート)ノードのキーの値以上です。 問題を理解するために例を見てみましょう 入力 出力 32 説明 ここでは、BS

  2. C++で最も深いノードの合計を見つけるプログラム

    二分木があるとしましょう。その最も深い葉の値の合計を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は11になります。 これを解決するには、次の手順に従います- マップmとmaxDepthを定義します 再帰メソッドsolve()を定義します。これはノードとレベルを取り、最初はレベルは0です ノードが存在しない場合は、戻ります maxDepth:=レベルの最大値とmaxDepth ノードの値だけm[レベル]を増やします 解決(ノードの左側、レベル+ 1) 解決(ノードの右側、レベル+ 1) mainメソッドで