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

C++에서 숫자가 0인 숫자 세기

<시간/>

숫자 N이 제공됩니다. 목표는 숫자가 0이고 [1,N] 범위에 있는 숫자를 찾는 것입니다.

10에서 N까지 숫자를 탐색하여 이를 수행하고(1에서 9까지 확인할 필요 없음) 각 숫자에 대해 while 루프를 사용하여 각 숫자를 확인할 것입니다. 숫자가 0 증가로 발견되면 다음 숫자로 이동하고 그렇지 않으면 숫자를 10으로 줄여 숫자가>0이 될 때까지 숫자를 확인합니다.

예를 들어 이해합시다.

입력

N=11

출력

Numbers from 1 to N with 0 as digit: 1

설명

Starting from i=10 to i<=11
Only 10 has 0 as a digit. No need to check the range [1,9].

입력

N=100

출력

Numbers from 1 to N with 0 as digit: 10

설명

10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Ten numbers have 0 as digits.

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

  • 정수 N을 취합니다.

  • 함수 haveZero(int n)는 n을 매개변수로 사용하고 0을 숫자로 포함하는 숫자의 개수를 반환합니다.

  • 이러한 숫자에 대해 초기 변수 개수를 0으로 간주합니다.

  • for 루프를 사용하여 숫자 범위를 탐색합니다. i=10 ~ i=n

  • 이제 각 숫자 num=i에 대해 while 루프 검사를 사용하여 if num%10==0, false이면 num을 10으로 나누고 num>0

    이 될 때까지 다음 숫자로 이동합니다.
  • true이면 추가 검사를 중지하고 개수를 늘리고 while 루프를 중단합니다.

  • 모든 루프의 끝에서 카운트는 1에서 N 사이의 숫자로 0을 포함하는 총 숫자를 갖습니다.

  • 카운트를 결과로 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int haveZero(int n){
   int count = 0;
   for (int i = 1; i <= n; i++) {
      int num = i;
      while(num>1){
         int digit=num%10;
         if (digit == 0){
            count++;
            break;
         }
         else
            { num=num/10; }
      }
   }
   return count;
}
int main(){
   int N = 200;
   cout <<"Numbers from 1 to N with 0 as digit: "<<haveZero(N);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Numbers from 1 to N with 0 as digit: 29