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

更新于: 2020年6月6日

313 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告