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

C++에서 특정 숫자가 없는 n자리 숫자 세기

<시간/>

num이라고 하는 숫자와 정수 유형 변수에 저장된 총 자릿수(digit)가 주어지고 작업은 주어진 자릿수가 없는 곳에서 형성될 수 있는 n개의 숫자 숫자의 개수를 계산하는 것입니다.

입력 − n =2, 숫자 =2

출력 - 개수는 153입니다.

설명 − 2가 아닌 두 자리 숫자(n)의 개수는 모두 153이므로 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,....... 등.

입력 − n =3, 숫자 =3

출력 - 개수는 2187입니다.

설명 − 3자리가 아닌 세 자리 수(n)의 개수는 모두 2187이므로 10, 11, 13, 14, 15, 16, 17, 18, 19, 30, 31, 33, 34,....... 등.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 숫자 'n'과 숫자를 정수 변수로 입력

  • 카운트 연산을 수행할 함수에 이 변수를 전달합니다.

  • 'n'이 도달할 수 있는 두 개의 변수 최소값과 최대값을 설정합니다. 예를 들어, 2자리 숫자는 최소값 10에서 시작하여 99까지 끝나는 것과 유사하게 3자리 숫자도 최소 100에서 시작하여 999까지입니다.

  • 최소에서 최대까지 루프 시작

  • 루프 내에서 'n'이 0보다 클 때까지 while 시작

  • 번호가 있는지 없는지 확인하십시오. 숫자가 있으면 아무 작업도 하지 않고 숫자가 없으면 1씩 증가시킵니다.

#include<bits/stdc++.h>
using namespace std;
int count(int n, int digit){
   int r =0;
   int count = 0;
   //calculate the min and max of the given number
   int min = (int)(pow(10, n-1));
   int max = (int)(pow(10, n));
   //start the loop till max value start from min
   for(int i=min; i<max; i++){
      int a=i;
      int f=0;
      //while a is greater than 0
      while(a>0){
         r=a%10;
         a=a/10;
         if(r==digit){
            f++;
         }
         if(f==0){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int n = 2, digit = 2;
   cout<<"Count of "<<n<< digit numbers not having a particular digit "<<digit<<" is :"<<count(n, digit);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -

Count of 2 digit numbers not having a particular digit 2 is :153