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

Chương trình C ++ cho chữ số K lớn nhất chia hết cho X?

Trong bài toán này, chúng ta sẽ cố gắng tìm số lớn nhất có chữ số K chia hết cho X. Để thực hiện công việc này, chúng ta sẽ lấy số chữ số K lớn nhất theo công thức này ((10 ^ k) - 1). Sau đó kiểm tra xem số đó có chia hết cho X hay không, nếu không, chúng ta sẽ nhận được số chính xác bằng cách sử dụng công thức này.

𝑚𝑎𝑥−(𝑚𝑎𝑥 𝑚𝑜𝑑 𝑋)

Một ví dụ là số có 5 chữ số chia hết cho 29. Vậy số lớn nhất có 5 chữ số là 99999. Số này không chia hết cho 29. Bây giờ bằng cách áp dụng công thức, chúng ta sẽ nhận được -

99999−(99999 𝑚𝑜𝑑 29)=99999−7=99992

Số 99992 chia hết cho 29.

Thuật toán

maxKDigit (k, x)

begin
   max = (10^k) - 1
   if max is divisible by x, return max
   otherwise return max – (max mod x)
end

Ví dụ

#include<iostream>
#include<cmath>
using namespace std;
long max_k_digit(int k, int x){
   //get the maximum number of k digits
   int max = pow(10, k) - 1;
   if(max % x == 0){
      return max;
   }
   return (max) - (max % x);
}
main() {
   int k, x;
   cout << "Enter Digit Count(K) and Divisor(N): ";
   cin >> k >> x;
   cout << "Result is: " << max_k_digit(k, x);
}

Đầu ra

Enter Digit Count(K) and Divisor(N): 5 29
Result is: 99992


Đầu ra

Enter Digit Count(K) and Divisor(N): 6 87
Result is: 999978