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

Đếm số/ký tự hệ thập lục phân trong khoảng C++

Cho một khoảng [start, end], nhiệm vụ là đếm số lượng chữ số thập lục phân (hexadecimal digits A-F) xuất hiện trong biểu diễn hex của tất cả các số trong khoảng đó.

Hệ thập lục phân (Hexadecimal)

Cơ số 16, các chữ số: 0-9, A(10), B(11), C(12), D(13), E(14), F(15).

Ví dụ

Input - start = 10, End = 13 Output - 4

Giải thích - 10(A), 11(B), 12(C), 13(D) → 4 ký tự hex.

Input - start = 15, End = 16 Output - 1

Giải thích - 15(F) là hex, 16(0x10) không có chữ cái A-F.

Phương pháp tiếp cận

  • Duyệt i từ start đến end
  • Nếu 10 ≤ i ≤ 15: count++ (là A-F trực tiếp)
  • Nếu i > 15: chuyển sang cơ số 16, kiểm tra từng chữ số (i % 16) có ≥ 10 không

Ví dụ code C++

#include <iostream>
using namespace std;

int counthexa(int start, int end) {
    int result = 0;
    for (int i = start; i <= end; i++) {
        if (i >= 10 && i <= 15) {
            result++;
        } else if (i > 15) {
            int k = i;
            while (k != 0) {
                if (k % 16 >= 10)
                    result++;
                k /= 16;
            }
        }
    }
    return result;
}

int main() {
    int start = 10, end = 60;
    cout << "count is: " << counthexa(start, end);
    return 0;
}

Kết quả

count is: 21