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

C++에서 주어진 범위에서 단위 자릿수 k로 숫자 세기

<시간/>

[첫 번째, 마지막] 간격이 주어집니다. 목표는 단위 자릿수가 k이고 범위 [first, last] 사이에 있는 숫자의 개수를 찾는 것입니다.

우리는 i=first에서 i=last까지 순회함으로써 이것을 할 것입니다. 각 숫자에 대해 단위 자릿수를 k와 비교합니다. 동일한 경우 카운트가 증가합니다.

예를 들어 이해합시다.

입력 - 처음=8 마지막=40 , k=8

출력 − 단위 자릿수가 k인 숫자의 개수 − 4

설명 -

Numbers between 8 and 40 with unit digit = 8
8,18, 28, 38

입력 - 처음=100 마지막=200 , k=9

출력 − 단위 자릿수가 k인 숫자의 개수 − 10

설명 -

Numbers between 100 and 200 with unit digit = 9
109, 119, 129, 139, 149, 159, 169, 179, 189, 199.
Total:10

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

  • 범위 [first, last]를 정의하기 위해 처음과 마지막에 두 개의 정수를 사용합니다.

  • 함수 getCount(int fst, int lst, int k)는 범위 변수와 k를 취하여 fst와 lst 사이의 수를 반환하고 단위 자릿수는 k입니다.

  • 초기 카운트를 0으로 합니다.

  • for 루프 시작을 i=fst에서 i=lst까지 사용하여 각 i에 대해 단위 자릿수를 ldigit=i%10으로 계산합니다.

  • ldigit==k이면 카운트를 증가시킵니다.

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

예시

#include <bits/stdc++.h>
using namespace std;
int getCount(int fst,int lst,int k){
   int count=0;
   for(int i=fst;i<=lst;i++){
      int ldigit=i%10; //to get last digit
      if(ldigit==k) //if both are equal increment count
         { ++count; }
   }
   return count;
}
int main(){
   int first = 5, last = 30;
   int K=5;
   cout<<"Numbers with unit digit K in range:"<<getCount(first, last, K);
   return 0;
}

출력

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

Numbers with unit digit K in range:3