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

C++ Số Pandigital trong cơ số cho trước

Số Pandigital trong cơ số B là số chứa tất cả chữ số từ 0 đến B-1. Kiểm tra xem một số cho trước có phải Pandigital trong cơ số B không. Ví dụ:

Input: "9651723467380AZ", base=10 → YES (có đủ 0-9)
Input: "130264ABCDE745789", base=16 → NO (thiếu F=15)

Phương pháp giải

Duyệt chuỗi, chuyển ký tự thành giá trị số (0-9, A-Z → 10-35). Lưu vào set. Kiểm tra size(set) == base.

Ví dụ minh họa

#include <bits/stdc++.h>
using namespace std;

int main() {
    int base = 10;
    char n[] = "9651723467380AZ";
    set<int, greater<int>> s;

    for (int i=0; i<strlen(n); i++) {
        if (n[i] >= '0' && n[i] <= '9')
            s.insert(n[i] - '0');
        else if (n[i] - 'A' <= base - 11)
            s.insert(n[i] - 'A' + 10);
    }

    if (s.size() == base) cout << "YES";
    else cout << "NO";
    return 0;
}

Kết quả

YES

Kết luận

Kiểm tra số Pandigital bằng set lưu chữ số duy nhất, so sánh kích thước với cơ số. Code C++ đơn giản, áp dụng cho C, Java, Python. Hy vọng hữu ích.