이 문제에서 우리는 X로 나눌 수 있는 가장 큰 K 자리 숫자를 찾으려고 노력할 것입니다. 이 작업을 수행하기 위해 이 공식((10^k) – 1)으로 가장 큰 K 자리 숫자를 취합니다. 그런 다음 숫자가 X로 나누어 떨어지는지 확인하고 그렇지 않은 경우 이 공식을 사용하여 정확한 숫자를 얻습니다.
𝑚𝑎𝑥−(𝑚𝑎𝑥 𝑚𝑜𝑑 𝑋)
한 가지 예는 29로 나눌 수 있는 5자리 숫자와 같습니다. 따라서 가장 큰 5자리 숫자는 99999입니다. 이것은 29로 나눌 수 없습니다. 이제 공식을 적용하면 -
99999−(99999 𝑚𝑜𝑑 29)=99999−7=99992
숫자 99992는 29의 배수입니다.
알고리즘
maxKDigit(k, x)
begin max = (10^k) - 1 if max is divisible by x, return max otherwise return max – (max mod x) end
예시
#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); }
출력
Enter Digit Count(K) and Divisor(N): 5 29 Result is: 99992
출력
Enter Digit Count(K) and Divisor(N): 6 87 Result is: 999978