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

Đếm số trong phạm vi trong đó chữ số đầu tiên bằng chữ số cuối cùng của số trong C ++

Cho một dãy số từ đầu đến cuối. Mục đích là để tìm số lượng các số có chữ số đầu tiên bằng chữ số cuối cùng và thuộc phạm vi [đầu tiên, cuối cùng].

Tất cả các số có một chữ số sẽ được tính nếu chúng nằm trong phạm vi.

Hãy cho chúng tôi hiểu với các ví dụ.

Ví dụ

Đầu vào - start =100, end =200

Đầu ra - Đếm số trong phạm vi có chữ số đầu tiên bằng chữ số cuối cùng của số là:10

Giải thích - Các con số sẽ là:

101, 121, 131, 141, 151, 161, 171, 181 và 191.

Đầu vào - start =1, end =10

Đầu ra - Đếm số trong phạm vi có chữ số đầu tiên bằng chữ số cuối cùng của số là:9

Giải thích - Tất cả các số có 1 chữ số sẽ được tính. 1, 2, 3, 4, 5, 6, 7, 8, 9

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

Tất cả các số có một chữ số nếu chúng nằm trong phạm vi [bắt đầu, kết thúc] sẽ được tính. Bây giờ đối với mỗi số hãy kiểm tra chữ số đầu tiên và cuối cùng. Nếu chữ số đầu tiên lớn hơn chữ số cuối cùng thì thêm 8 + val / 10 để đếm, nếu nhỏ hơn thì thêm 9 + val / 10 vào số đếm. Ở đây val là số hiện tại trong lệnh gọi đệ quy tới dải ô (int val).

  • Lấy số nguyên bắt đầu và kết thúc làm biến phạm vi.
  • Đặt số lượng =phạm vi (kết thúc) - phạm vi (bắt đầu).
  • Dải hàm (int val) nhận các số nguyên và trả về số lượng các số trong Dải có chữ số đầu tiên bằng chữ số cuối cùng của số.
  • Lấy số lượng ban đầu là 0.
  • Tận cùng là chữ số cuối cùng là giá trị% 10.
  • Trả lại val nếu đó là một số có một chữ số (nhỏ hơn 10).
  • Bây giờ, sử dụng vòng lặp while tính toán như start =val% 10. Giảm val đi 10. Vì vậy, số bắt đầu sẽ có chữ số đầu tiên trong đó.
  • Bây giờ, nếu start <=end thì thêm 9 + set_val / 10 để đếm.
  • Bây giờ nếu bắt đầu> kết thúc, sau đó thêm 8 + set_val / 10 để đếm.
  • Kết quả là số lượt trả lại cuối cùng.

Ví dụ

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

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

Đầu ra

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