找到最大可被 X 整除的 K 位數


在這個題目中,我們將嘗試找出最大的 K 位數,該數可以被 X 整除。為此,我們將使用此公式 ((10^k) – 1) 獲取最大的 K 位數。然後檢查該數是否可以被 X 整除,如果不是,我們將使用此公式獲取確切的數。

𝑚𝑎𝑥−(𝑚𝑎𝑥 𝑚𝑜𝑑 𝑋)

一個示例像一個 5 位數,可以被 29 整除。因此,最大的 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

更新日期: 30-Jul-2019

96 次瀏覽

開啟你的事業

完成課程以獲得認證

開始
廣告