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

C++에서 첫 번째 숫자가 숫자의 마지막 숫자와 같은 범위의 숫자 개수

<시간/>

시작과 끝 사이의 숫자 범위가 주어집니다. 목표는 첫 번째 숫자가 마지막 숫자와 같고 [ first,last ] 범위에 속하는 숫자의 개수를 찾는 것입니다.

범위 내에 있으면 모든 한 자리 숫자가 계산됩니다.

예를 들어 이해합시다.

예를 들어

입력 - 시작 =100, 끝 =200

출력 - 첫 번째 숫자가 숫자의 마지막 숫자와 같은 범위의 숫자 개수:10

설명 - 숫자는 다음과 같습니다.

101, 121, 131, 141, 151, 161, 171, 181 및 191.

입력 - 시작 =1, 끝 =10

출력 - 첫 번째 숫자가 숫자의 마지막 숫자와 같은 범위의 숫자 개수:9

설명 - 모든 1자리 숫자가 계산됩니다. 1, 2, 3, 4, 5, 6, 7, 8, 9

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

[start, end] 범위에 있는 모든 한 자리 숫자가 계산됩니다. 이제 각 숫자에 대해 첫 번째 숫자와 마지막 숫자를 확인하십시오. 첫 번째 숫자가 마지막 숫자보다 크면 계산에 8 + val/10을 더하고 더 작으면 9 + val/10을 추가합니다. 여기서 val은 range(int val)에 대한 재귀 호출의 현재 숫자입니다.

  • 정수를 범위 변수로 시작하고 끝냅니다.
  • 설정 횟수 =범위(종료) - 범위(시작).
  • 함수 범위(int val)는 정수를 취하고 첫 번째 숫자가 숫자의 마지막 숫자와 같은 범위의 숫자 개수를 반환합니다.
  • 초기 카운트를 0으로 합니다.
  • 끝을 val%10인 마지막 숫자로 사용합니다.
  • 한 자리 숫자(10 미만)인 경우 값을 반환합니다.
  • 지금 while 루프를 사용하여 start=val%10으로 계산합니다. val을 10만큼 줄입니다. 따라서 시작 부분에는 첫 번째 숫자가 포함됩니다.
  • 이제 start<=end이면 9 + set_val / 10을 추가하여 계산합니다.
  • 이제 start>end이면 8 + set_val / 10을 추가하여 계산합니다.
  • 끝에 결과로 계산됩니다.

예시

#include <iostream>
using namespace std;

int range(int val) {
   int count = 0;
   int start;
   int end = val % 10;
   int set_val = val;

   if (val < 10) {
      return val;
   }
   end = val % 10;
   while (val) {
      start = val % 10;
      val = val / 10;
   }
   if (start <= end) {
      count = 9 + set_val / 10;
   } else {
      count = 8 + set_val / 10;
   }
   return count;
}
int main() {
   int start = 10, end = 50;
   int count = range(end) - range(start);
   cout << "Count of Numbers in Range where first digit is equal to last digit of the number are: " << count;
   return 0;
}

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

출력

Count of Numbers in Range where first digit is equal to last digit of the number are: 4