C++ 中计算可被给定数字整除的 n 位数
假设我们有两个元素,例如 d 和 num,任务是找到可被 num 整除的 d 位数。
简单来说,假设我们输入 d 为 2,那么我们将首先找到所有两位数,即 10 到 99,然后找到所有可被 num 整除的数字。
让我们通过一些例子来进一步理解这一点:
输入 - 位数 = 2,num= 12
输出 - 可被给定数字整除的 n 位数的个数:8
解释 - 可被 12 整除的两位数是 12、24、36、48、60、72、84 和 96,因此有 8 个两位数可被 12 整除。
输入 - 位数 = 2,num= 9
输出 - 可被给定数字整除的 n 位数的个数 - 10
解释 - 可被 9 整除的两位数是 18、27、36、45、54、63、72、81、90 和 99,因此有 10 个两位数可被 9 整除。
下面程序中使用的方案如下
将元素位数和 num 作为输入。
将变量 count 初始化为 0,用于计算可被 num 整除的数字个数。
声明并设置 digi_first 为 pow(10, digit - 1)
声明并设置 digi_last 为 pow(10, digit)
现在声明并设置 d_first 为 digi_first % num,d_last 为 digi_last % num
在找到 d_first 和 d_last 后,将 digi_first 设置为 (digi_first - d_first) + num,将 digi_last 设置为 digi_last - d_last
现在将 count 设置为 ((digi_last - digi_first) / num + 1)。
返回并打印 count。
示例
#include <cmath> #include <iostream> using namespace std; int main(){ int digit = 2 , num = 9; //store the count int count= 0 ; int digi_first = pow(10, digit - 1); int digi_last = pow(10, digit); int d_first = digi_first % num; int d_last = digi_last % num; digi_first = (digi_first - d_first) + num; digi_last = digi_last - d_last; count = ((digi_last - digi_first) / num + 1); cout<<"Count of n digit numbers divisible by given number: "<<count<<"\n"; return 0; }
输出
如果我们运行以上代码,我们将得到以下输出:
Count of n digit numbers divisible by given number: 10
广告