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

C++でLCMをNとして使用した個別の数値の最大合計


この問題では、数値Nが与えられます。私たちのタスクは、C++でLCMをNとして使用して個別の数値の最大合計を見つけるプログラムを作成することです。

問題の説明

ここでは、最小公倍数(LCM)としてNを持つ最大数の合計を見つける必要があります。

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

入力

N = 10

出力

18

説明

Maximum sum with LCM 10 is 1 + 2 + 5 + 10 = 18

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

この問題の簡単な解決策は、数値NをLCMとして使用する場合、Nのすべての異なる除数を取得し、それらを合計してmaxSumを取得する必要があるという考えを使用することです。

このために、Nのすべての因子を見つけます。次に、それらを合計すると、LCMがNであることに寄与する可能性のあるすべての数値を考慮したため、これが最大になります。

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

#include <iostream>
using namespace std;

int calcFactorSum(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 = 42;
   cout<<"The sum of distinct numbers with LCM as "<<N<<" is "<<calcFactorSum(N);
   return 0;
}

出力

The sum of distinct numbers with LCM as 42 is 96

  1. C++で指定された合計の最大サイズサブセット

    問題の説明 N個の要素と合計の配列が与えられます。合計が与えられた合計に等しい最大サイズのサブセットのサイズを見つける必要があります 例 入力配列がarr={2、3、5、10}でsum =20の場合、出力は-として4になります。 2 + 3 + 5 + 10=20これは与えられた合計に等しい アルゴリズム 動的計画法を使用してこの問題を解決できます。 最大サブセットをカウントするには、別のDP配列(「カウント配列」と呼ばれます)を使用します。ここで、count[i][j]は最大です。 count[i][j-1]。ここでは、現在の要素は考慮されていません。 scount [i-

  2. C++での醜い数字のサブ配列の最大長

    問題の説明 N個の要素の配列arr[]が与えられます(0≤arr[i]≤1000)。タスクは、醜い数字のみを含むサブ配列の最大長を見つけることです。 醜い数は、素因数が2、3、または5だけの数です。 以下の例は、シリーズのいくつかの数字です:1、2、3、4、5、6、8、9、10、12、15、… 例 入力配列が{1、2、7、9、120、810、374}の場合、答えは3 as- 醜い数の可能な最長のサブ配列sis{9、120、810} アルゴリズム unordered_setを取得し、1000未満の醜い数字をすべてセットに挿入します current_maxとmax_so_farとい