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

C++에서 첫 번째와 마지막 숫자가 같은 숫자 세기


[첫 번째, 마지막] 간격이 주어집니다. 목표는 이 간격 내에서 첫 번째와 마지막 숫자가 동일한 숫자의 개수를 찾는 것입니다. 예를 들어, 232는 2와 첫 번째 및 마지막 숫자가 동일합니다.

우리는 i=first에서 i=last까지 순회함으로써 이것을 할 것입니다. 각 숫자에 대해 첫 번째 숫자와 마지막 숫자가 같으면 숫자를 비교합니다.

예를 들어 이해합시다.

입력 − 처음=8 마지막=40

출력 − 첫 번째와 마지막 숫자가 같은 숫자의 개수 − 5

설명 − 첫 번째와 마지막 숫자가 동일한 8에서 40 사이의 숫자 −

8, 9, 11, 22, 33

입력 − 처음=100 마지막=200

출력 − 첫 번째와 마지막 숫자가 같은 숫자의 개수:5

설명 − 100에서 200 사이의 첫 번째와 마지막 숫자가 동일한 숫자 −

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

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

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

  • 함수 getFirstDigit(int num)은 숫자를 받아 첫 번째 숫자를 반환합니다.

  • num>=10일 때 num을 10으로 나눕니다. 끝에서 num은 첫 번째 숫자를 갖습니다. 이 값을 반환합니다.

  • 함수 getCount(int fst,int lst)는 범위 변수를 사용하고 첫 번째와 마지막 숫자가 동일한 숫자의 개수를 반환합니다.

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

  • for 루프 시작을 i=fst에서 i=lst까지 사용하여 각 i에 대해 getFirstDigit(i)를 호출하여 첫 ​​번째 숫자를 계산하고 fdigit에 저장합니다. (fdigit=getFirstDigit(i)).

  • 마지막 숫자를 ldigit=i%10으로 계산합니다.

  • ldigit==fdigit이면 동일함을 의미합니다. 증분 수.

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

예시

#include <bits/stdc++.h>
using namespace std;
//to find starting digit
int getFirstDigit(int num){
   while (num >= 10)
      { num = num/ 10; }
   return num;
}
int getCount(int fst,int lst){
   int count=0;
   for(int i=fst;i<=lst;i++){
      int fdigit=getFirstDigit(i);
      int ldigit=i%10; //to get last digit
      if(fdigit==ldigit) //if both are equal increment count
         { ++count; }
   }
   return count;
}
int main(){
   int first = 10, last = 23;
   cout<<"Numbers with same first and last digits:"<<getCount(first, last);
   return 0;
}

출력

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

Numbers with same first and last digits:2