Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số trong khoảng có chữ số đầu bằng chữ số cuối trong C++

Cho một khoảng số giữa start và end. Mục tiêu: đếm số lượng số có chữ số đầu tiên bằng chữ số cuối cùng và nằm trong khoảng [first, last].

Tất cả số 1 chữ số sẽ được đếm nếu nằm trong khoảng.

Hiểu qua ví dụ

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

Đầu ra: Số lượng số thỏa mãn: 10

Giải thích: Các số: 101, 111, 121, 131, 141, 151, 161, 171, 181, 191.

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

Đầu ra: Số lượng số thỏa mãn: 9

Giải thích: Tất cả số 1 chữ số: 1, 2, 3, 4, 5, 6, 7, 8, 9.

Phương pháp sử dụng

Tất cả số 1 chữ số trong khoảng [start, end] được đếm. Với mỗi số kiểm tra chữ số đầu và cuối. Nếu chữ số đầu <= cuối thì cộng 8 + val/10, nếu lớn hơn cộng 9 + val/10. val là số hiện tại trong gọi đệ quy range(int val).

  • Nhập start, end.
  • count = range(end) - range(start).
  • Hàm range(int val) trả về đếm số thỏa mãn.
  • Khởi tạo count = 0, end = val % 10 (chữ số cuối).
  • Trả về val nếu val < 10 (1 chữ số).
  • Vòng lặp while tính start = val % 10, val = val / 10 để lấy chữ số đầu.
  • Nếu start <= end cộng 9 + set_val / 10.
  • Nếu end cộng 8 + set_val / 10.
  • Trả về count.

Ví dụ mã nguồn

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

Chạy mã trên cho kết quả:

Kết quả

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