Những điều cần biết:
Đầu tiên, con số may mắn.
Những con số may mắn được tạo ra như vậy:
Lấy tất cả các số tự nhiên:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Sau đó, loại bỏ từng số thứ hai.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Bây giờ, 3
là an toàn.
Xóa mọi số thứ 3:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Bây giờ, 7
là an toàn.
Xóa mọi số thứ 7.
Tiếp tục và xóa mọi n
số thứ tự, trong đón
là số an toàn đầu tiên sau khi loại bỏ.
Danh sách cuối cùng của số an toàn là số may mắn.
Các số không may mắn bao gồm các danh sách riêng biệt của các số [U1, U2, U3... Un]
.
U1
là bộ số đầu tiên được xóa khỏi "ứng cử viên" may mắn, vì vậy chúng là:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
là bộ số thứ hai bị xóa:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
Và cứ tiếp tục như vậy ( U3
là danh sách thứ ba, U4
là thứ tư, v.v.)
Thử thách:
Nhiệm vụ của bạn là, khi được đưa ra hai đầu vào m
và n
, tạo m
số thứ trong danh sách Un
.
Ví dụ đầu vào và đầu ra:
(5, 2) -> 29
(10, 1) -> 20
Thông số kỹ thuật:
- Chương trình của bạn phải hoạt động
m
tối đa1e6
vàn
tối đa100
.- Bạn được đảm bảo rằng cả hai
m
vàn
là số nguyên dương. - Nếu bạn tò mò,
U(1e6, 100)
=5,333,213,163
. (Cảm ơn bạn @pacholik!)
- Bạn được đảm bảo rằng cả hai
- Chương trình của bạn phải tính toán trong vòng 1 ngày trên một máy tính hiện đại hợp lý.
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!
PS: Sẽ thật tuyệt nếu ai đó nghĩ ra một công thức chung để tạo ra những thứ này. Nếu bạn có một công thức, xin vui lòng đặt nó trong câu trả lời của bạn!
(1e6,1e6)
?
n=1
trường hợp? Vì đây là điều đặc biệt-- đối với tất cả các trường hợp khác, chỉ số dựa trên 0 của số may mắn tiếp theo là n-1
.