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.