Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tích các chữ số lớn nhất trong số các số nhỏ hơn hoặc bằng N trong C ++


Giả sử, chúng ta có một số nguyên N> 0. Nhiệm vụ là tìm tích các chữ số lớn nhất trong số các số nhỏ hơn hoặc bằng N. Nếu N là 390 thì kết quả là 216, vì số 389 tạo ra sản phẩm tối đa 3 * 8 * 9 =216.

Để giải quyết vấn đề này, chúng ta sẽ sử dụng phương pháp đệ quy. Vì vậy, nếu N =0 thì trả về 1, nếu số N <10 thì trả về N, ngược lại trả về max (max_product (N / 10) * (N mod 10), max_product ((N / 10) - 1) * 9 )

Ví dụ

#include<iostream>
using namespace std;
int max_product(int N) {
   if (N == 0)
      return 1;
   if (N < 10)
      return N;
   return max(max_product(N / 10) * (N % 10), max_product(N / 10 - 1) * 9);
}
int main() {
   int N = 432;
   cout << "Maximum product is: " << max_product(N);
}

Đầu ra

Maximum product is: 243