Cho một số, nhiệm vụ là kiểm tra xem số nhập vào có phải là số may mắn hay không và hiển thị kết quả.
Số may mắn là gì?
Số may mắn là số mà từng chữ số của nó đều khác nhau, và nếu ít nhất một chữ số lặp lại thì số đó không được coi là số may mắn.
Ví dụ
Đầu vào: n = 1234 Đầu ra: đây là số may mắn Giải thích: Không có chữ số nào lặp lại trong số n nên nó là số may mắn Đầu vào: n = 3434 Đầu ra: đây không phải số may mắn Giải thích: Trong số n cho trước, 3 và 4 lặp lại 2 lần nên không phải số may mắn
Phương pháp sử dụng trong chương trình cho trước:
- Nhập số n từ người dùng để kiểm tra xem nó có phải số may mắn hay không
- Duyệt qua tất cả các chữ số cho đến hết độ dài của số
- Đánh dấu chữ số đã thăm mỗi lần thăm và kiểm tra xem nó đã được tìm thấy chưa
- Hiển thị số đã cho có phải là số may mắn hay không
THUẬT TOÁN
BẮT ĐẦU
Bước 1 → Khai báo hàm kiểm tra số có may mắn hay không
bool check_lucky(int size)
Khai báo bool arr[10]
VỒNG LẶP VỚI int i=0; i<10; i++
Gán arr[i] = false
KẾT THÚC
VỒNG LẶP KHI (size > 0)
Khai báo int digit = size % 10
NẾU (arr[digit])
TRẢ VỀ false
KẾT THÚC
Gán arr[digit] = true
Gán size = size/10
KẾT THÚC
TRẢ VỀ true
Bước 2 → Trong main()
Khai báo int arr[] = {0,34,2345,1249,1232}
Tính int size = sizeof(arr)/sizeof(arr[0])
VỒNG LẶP VỚI int i=0; i
Ví dụ mã nguồn
#include <iostream>
using namespace std;
// Trả về true nếu số là may mắn
bool check_lucky(int size) {
bool arr[10];
for (int i=0; i<10; i++)
arr[i] = false;
while (size > 0) {
int digit = size % 10;
if (arr[digit])
return false;
arr[digit] = true;
size = size/10;
}
return true;
}
int main() {
int arr[] = {0,34,2345,1249,1232};
int size = sizeof(arr)/sizeof(arr[0]);
for (int i=0; i
Kết quả đầu ra
0 is Lucky
34 is Lucky
2345 is Lucky
1249 is Lucky
1232 is not Lucky