求 K 位數字中能被 X 整除的最小數字?


在本文中,我們將嘗試找到能被 X 整除的 K 位數字中最小的。為了完成這項任務,我們將使用此公式 (10^(k-1)) 來得到最小的 K 位數字。然後檢查此數字是否能被 X 整除,如果不能,我們將使用此公式得到準確的數字。

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

有一個示例,比如要找一個 5 位數字,能被 29 整除。所以最小的 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

更新日期: 2019 年 7 月 30 日

191 次瀏覽

開啟您的 職業

完成課程並獲得認證

開始
廣告
© . All rights reserved.