Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมสูงสุดและผลิตภัณฑ์ของหลัก M เรียงกันเป็นตัวเลขใน C++


ในปัญหานี้ เราได้รับสตริงที่แสดงถึงตัวเลข งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมสูงสุดและผลิตภัณฑ์ของหลัก M เรียงกันเป็นตัวเลขในภาษา C++

คำอธิบายปัญหา

เราพบลำดับทั้งหมดของตัวเลข 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