Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

X로 나눌 수 있는 가장 작은 K 자리 숫자에 대한 C++ 프로그램?

<시간/>

이 문제에서 우리는 X로 나눌 수 있는 가장 작은 K 자리 숫자를 찾으려고 노력할 것입니다. 이 작업을 수행하기 위해 이 공식(10^(k-1))에 의해 가장 작은 K 자리 숫자를 취합니다. 그런 다음 숫자가 X로 나누어 떨어지는지 확인하고 그렇지 않은 경우 이 공식을 사용하여 정확한 숫자를 얻습니다.

(min+ 𝑋)−((min+ 𝑋) 𝑚𝑜𝑑 𝑋)

한 가지 예는 29로 나눌 수 있는 5자리 숫자와 같습니다. 따라서 가장 작은 5자리 숫자는 10000입니다. 이것은 29로 나눌 수 없습니다. 이제 공식을 적용하여 -

(10000+ 29)−((10000+29) 𝑚𝑜𝑑 29)=10029−24=10005

숫자 10005는 29의 배수입니다.

알고리즘

minKDigit(k, x)

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

예시

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

출력

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

출력

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