시작과 끝 사이의 숫자 범위가 주어집니다. 목표는 첫 번째 숫자가 마지막 숫자와 같고 [ 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