C++ 程序求能被 X 整除的最小 K 位数字?

c++server side programmingprogramming

在这个问题中,我们将尝试找到能被 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)
   如果 min 可以被 x 整除,则返回 min
   否则返回 (min + x) – ((min + x) mod x)
end

示例

#include<iostream>
#include<cmath>
using namespace std;
long min_k_digit(int k, int x) {
   //获取 k 位数字的最小位数
   int min = pow(10, k-1);
   if(min % x == 0) {
      return min;
   }
   return (min + x) - ((min + x) % x);
}
main() {
   int k, x;
   cout << "输入位数(K)和除数(N): ";
   cin >> k >> x;
   cout << "结果为: " << min_k_digit(k, x);
}

输出

输入位数(K)和除数(N):5 29
结果为:10005

输出

输入位数(K)和除数(N):6 87
结果为:100050

相关文章