Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số nguyên m chữ số chia hết cho số nguyên n trong C ++


Ta được hai số nguyên m và n. Mục đích là đếm các số có m chữ số chia hết cho n.

Nếu m =1 thì các số là 0,1,2,3,4,5,6,7,8,9 và n =3 thì các số chia hết cho 3 =0,3,6,9 tính =4.

Hãy cùng hiểu với các ví dụ.

Đầu vào - m =2, n =9

Đầu ra - Đếm số m chữ số chia hết cho n - 10

Giải thích - từ 10 đến 99 số chia hết cho 9 là -

18, 27, 36, 45, 54, 63, 72, 81, 90, 99

Đầu vào m =3, n =300

Đầu ra - Đếm số m chữ số chia hết cho n:3

Giải thích - từ 100 đến 999 số chia hết cho 300 là -

300, 600, 900

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy các số nguyên m và n.

  • Tính số m-1 chữ số lớn nhất dưới dạng num1

  • Tính số chữ số m lớn nhất dưới dạng num2

  • Hàm findCount (int n, int L, int R) nhận n và phạm vi (giữa num1 và num2) làm đầu vào và trả về tất cả các số trong phạm vi đó chia hết cho n.

  • Lấy số lượng ban đầu là 0.

  • Bắt đầu từ i =L đến i =R. Nếu i% n ==0, số gia tăng.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of M digit no.s divisible by N:11