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

C++の数値のM個の連続する数字の最大合計と積


この問題では、数字を表す文字列が与えられます。私たちのタスクは、C++の数値のM個の連続する数字の最大合計と積を見つけるプログラムを作成することです。

問題の説明

M個の連続した数字のすべてのシーケンスを見つけます。そして、最大の合計と積を返します。

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

入力

number = 2379641, M = 4

出力

maxSum = 26maxProd = 1512

説明

サイズ4のすべてのサブシーケンスは2379、3796、7964、9641です。maxSum=7 + 9 + 6 + 4 =26 maxProd =7 * 9 * 6 * 4 =1512

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

この問題の簡単な解決策は、サイズMのすべての可能な連続するサブシーケンスを数から見つけることです。次に、整数のすべての値を加算して乗算し、すべての合計値と積の値の最大値を返します。

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

#include <iostream>
using namespace std;
int findMaxVal(int x, int y){
   if(x > y)
      return x;
      return y;
}
void calcMaxProductAndSum(string number, int M){
   int N = number.length();
   int maxProd = -1, maxSum = -1;
   int product = 1, sum = 0;
   for (int i = 0; i < N - M; i++){
      product = 1, sum = 0;
      for (int j = i; j < M + i; j++){
         product = product * (number[j] - '0');
         sum = sum + (number[j] - '0');
      }
      maxProd = findMaxVal(maxProd, product);
      maxSum = findMaxVal(maxSum, sum);
   }
   cout<<"The Maximum Product of "<<M<<" consecutive digits in number "<<number<<" is "<<maxProd<<endl;
   cout<<"The Sum Product of "<<M<<" consecutive digits in number "<<number<<" is "<<maxSum;
}
int main() {
   string str = "2379641";
   int m = 4;
   calcMaxProductAndSum(str, m);
}

出力

The Maximum Product of 4 consecutive digits in number 2379641 is 1512
The Sum Product of 4 consecutive digits in number 2379641 is 26

  1. 与えられた数がC++でその桁の階乗の合計を除算するかどうかを確認します

    整数があるとすると、その数がその桁の階乗の合計を除算するかどうかを調べる必要があります。数値が19で、桁の階乗の合計が(1!+ 9!)=362881であるとすると、これは19で割り切れます。 これを解決するために、数値を取得し、各桁の階乗を計算して合計を加算します。合計が数値自体で割り切れる場合はtrueを返し、そうでない場合はfalseを返します。 例 #include <iostream> using namespace std; int factorial(int n){    if(n == 1 || n == 0)     &nb

  2. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;