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

これらの数値のLCMがC++でNになるような個別の数値の最大合計


この問題では、私たちは数Nです。私たちのタスクは、これらの数のLCMがC ++でNになるように、個別の数の最大合計を見つけるプログラムを作成することです。

問題の説明

数Nのすべての因子の合計を見つける必要があります。そして、最大の合計を見つけるためにすべてを加算します。

問題を理解するために例を見てみましょう

入力

N = 12

出力

28

説明

All distinct factors of N are 1, 2, 3, 4, 6, 12.
Sum = 1 + 2 + 3 + 4 + 6 + 12 = 28

ソリューションアプローチ

簡単な解決策は、数値のすべての要素を見つけてから、すべての異なる要素を追加して結果を見つけることです。

このために、Nの平方根まで繰り返します。そして、数値がNを除算するかどうかを確認します。はいの場合は、それが明確であるかどうかを確認します。はいの場合は、数値と除算の商を追加します。それ以外の場合は、数値を追加します。最終的なmaxSumを返します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int calcMaxSumForLCM(int N){
   int maxSum = 0;
   for (int i = 1; i*i <= N; i++){
      if (N%i == 0){
         if (i == (N/i))
            maxSum = maxSum + i;
         else
            maxSum = maxSum + i + (N/i);
      }
   }
   return maxSum;
}
int main(){
   int N = 17;
   cout<<"The sum of distinct numbers such that LCM if these numbers is "<<N<<" is "<<calcMaxSumForLCM(N);
   return 0;
}

出力

The sum of distinct numbers such that LCM if these numbers is 17 is 18

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

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

  2. C++で2つの要素が隣接しないような循環配列の最大合計

    この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ