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