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

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

Trong bài toán này, chúng ta sẽ cố gắng tìm số có chữ số K nhỏ nhất 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 nhỏ 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.

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

Một ví dụ như số có 5 chữ số chia hết cho 29. Vậy số có 5 chữ số nhỏ nhất là 10000. 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 -

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

Số 10005 chia hết cho 29.

Thuật toán

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

Ví dụ

#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);
}

Đầu ra

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

Đầu ra

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