Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정수 n으로 나눌 수 있는 m자리 정수의 개수


우리는 두 개의 정수 m과 n을 받았습니다. 목표는 n으로 나눌 수 있는 m자리 숫자를 계산하는 것입니다.

m=1이면 숫자는 0,1,2,3,4,5,6,7,8,9이고 n=3이면 3으로 나눌 수 있는 숫자=0,3,6,9 count=4입니다.

예를 들어 이해합시다.

입력 - m=2, n=9

출력 − n − 10으로 나눌 수 있는 m자리 숫자의 개수

설명 - 9로 나누어 떨어지는 10에서 99 사이의 숫자는 -

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

입력 m=3, n=300

출력 − n으로 나누어지는 m자리 숫자의 개수: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