C++ 中计算 m 位数且能被整数 n 整除的整数个数
给定两个整数 m 和 n。目标是计算 m 位数中能被 n 整除的数字个数。
如果 m=1,则数字为 0,1,2,3,4,5,6,7,8,9,如果 n=3,则能被 3 整除的数字为 0,3,6,9,个数为 4。
让我们通过例子来理解。
输入 − m=2, n=9
输出 − m 位数中能被 n 整除的数字个数 − 10
说明 − 在 10 和 99 之间,能被 9 整除的数字为 −
18, 27, 36, 45, 54, 63, 72, 81, 90, 99
输入 m=3, n=300
输出 − m 位数中能被 n 整除的数字个数:3
说明 − 在 100 和 999 之间,能被 300 整除的数字为 −
300, 600, 900
下面程序中使用的算法如下
我们获取整数 m 和 n。
计算最大的 m-1 位数作为 num1
计算最大的 m 位数作为 num2
函数 findCount(int n, int L, int R) 获取 n 和范围(num1 和 num2 之间)作为输入,并返回该范围内所有能被 n 整除的数字。
将初始计数设置为 0。
从 i=L 到 i=R 开始。如果 i%n==0,则递增计数。
返回计数作为结果。
示例
#include<bits/stdc++.h> using namespace std; // Returns count of m digit numbers having n // as divisor int findCount(int n, int L, int R){ int count=0; int i; for(int i=L;i<=R;i++){ if(i%n==0) { count++; } } return count; } int main(){ int M = 2, N = 9; int i; int num1 = 0; //largest m-1 digit no. for (i = 0; i < (M - 1); i++) num1 = (num1 * 10) + 9; int num2 = 0; //largest m digit no. for (i = 0; i < M; i++) num2 = (num2 * 10) + 9; cout<<"Count of M digit no.s divisible by N:"<<findCount(N,num1+1,num2); return 0; }
输出
如果我们运行以上代码,它将生成以下输出:
Count of M digit no.s divisible by N:11
广告