Bilinecek şeyler:
İlk olarak, şanslı sayılar.
Şanslı sayılar şöyle üretilir:
Tüm doğal sayıları al:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Sonra her ikinci numarayı kaldırın.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Şimdi 3
güvende.
Her 3 numarayı kaldır:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Şimdi 7
güvende.
Her 7. numarayı kaldırın.
Devam edin ve n
elemeden n
sonraki ilk güvenli numara olan her bir sayıyı kaldırın .
Güvenli numaraların son listesi şanslı numaralardır.
Şanssız sayılar, ayrı sayılar listesinden oluşur [U1, U2, U3... Un]
.
U1
şanslı "adaylar" dan kaldırılan ilk sayı kümesidir, yani:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
kaldırılan ikinci sayı kümesidir:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
Ve diğerleri ve diğerleri ( U3
üçüncü liste, U4
dördüncü vb.)
Meydan okuma:
Göreviniz iki girişi olmaktadır ki, m
ve n
, üretmek m
listede inci numarayı Un
.
Örnek girişler ve çıkışlar:
(5, 2) -> 29
(10, 1) -> 20
Özellikleri:
- Programınız
m
en çok1e6
ven
en çok için çalışmalıdır100
.- Her ikisinin de pozitif
m
ven
tam sayı olduğu garantilidir . - Merak ediyorsanız,
U(1e6, 100)
=5,333,213,163
. (Teşekkürler @pacholik!)
- Her ikisinin de pozitif
- Programınız makul bir modern bilgisayarda 1 gün içinde bunu hesaplamalıdır.
Bu kod-golf , bayt cinsinden en kısa kod kazanır!
Not: Birisi bunları üretmek için genel bir formül bulmuşsa iyi olurdu. Bir formülünüz varsa, lütfen cevabınıza yazınız!
(1e6,1e6)
?
n=1
dava için çalışmaması kabul edilebilir mi? Bu özel olduğu için - diğer tüm durumlar için, bir sonraki şanslı sayının 0-tabanlı endeksidir n-1
.