Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số có chữ số đầu tiên và chữ số cuối giống nhau trong C ++


Chúng ta được cung cấp một khoảng [đầu tiên, cuối cùng]. Mục đích là để tìm số lượng các số có cùng chữ số đầu tiên và chữ số cuối cùng trong khoảng thời gian này. Ví dụ:232 có cùng chữ số đầu tiên và chữ số cuối cùng là 2.

Chúng tôi sẽ làm điều này bằng cách chuyển từ i =đầu tiên đến i =cuối cùng. Đối với mỗi số, tôi so sánh chữ số đầu tiên với chữ số cuối cùng, nếu chúng bằng nhau thì số lượng sẽ tăng lên.

Hãy cùng hiểu với các ví dụ.

Đầu vào - đầu tiên =8 cuối cùng =40

Đầu ra - Đếm số có chữ số đầu tiên và chữ số cuối giống nhau - 5

Giải thích - Các số từ 8 đến 40 có cùng chữ số đầu tiên và chữ số cuối cùng -

8, 9, 11, 22, 33

Đầu vào - đầu tiên =100 cuối cùng =200

Đầu ra - Đếm số có chữ số đầu tiên và chữ số cuối giống nhau:5

Giải thích - Các số từ 100 đến 200 có cùng chữ số đầu tiên và chữ số cuối cùng -

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy hai số nguyên đầu tiên và cuối cùng để xác định phạm vi [đầu tiên, cuối cùng].

  • Hàm getFirstDigit (int num) nhận một số và trả về chữ số đầu tiên của nó.

  • Trong khi num> =10, chia num cho 10. Cuối cùng num sẽ có chữ số đầu tiên. Trả lại giá trị này.

  • Hàm getCount (int fst, int lst) nhận các biến phạm vi và trả về tổng số các số có cùng chữ số đầu tiên và chữ số cuối cùng.

  • Lấy số lượng ban đầu là 0.

  • Sử dụng vòng lặp for bắt đầu từ i =fst đến i =lst, đối với mỗi tôi tính nó là chữ số đầu tiên bằng cách gọi getFirstDigit (i) và lưu trữ trong fdigit. (fdigit =getFirstDigit (i)).

  • Tính chữ số cuối cùng dưới dạng ldigit =i% 10.

  • Nếu ldigit ==fdigit, nghĩa là chúng giống nhau. Số lượng tăng dần.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Numbers with same first and last digits:2