Yönetici Özeti
Giriş Verilen k
, tamsayılar bir bölümü bulmak 1
için n
içine k
büyük-toplamı serbest alt kümeleri n
10 dakika içinde yapabilirsiniz.
Arka plan: Schur numaraları
Bir dizi A
olan toplamı içermeyen kendiliğinden toplamı iseA + A = { x + y | x, y in A}
onunla ortak hiçbir elemanları vardır.
Her pozitif tamsayı için, kümenin toplamsız altkümelere bölünebileceği en k
büyük bir tamsayı vardır . Bu sayı k denir inci Schur numarası (OEIS A045652 ).S(k)
{1, 2, ..., S(k)}
k
Örneğin S(2) = 4
,. {1, 2, 3, 4}
Olarak bölümleyebiliriz {1, 4}, {2, 3}
ve bu iki toplamsız alt kümeye benzersiz bölümdür, ancak şimdi 5
her iki bölüme de bir ekleyemeyiz .
Meydan okuma
Aşağıdakileri yapan deterministik bir program yazın :
k
Girdi olarak pozitif bir tamsayı alın- Geçerli Unix zaman damgasını stdout'a yazma
- Bir bölüm, bir dizi çıkışları
1
içinn
içinek
artırmak için toplam içermeyen alt-n
akım UNIX zaman etiketleri dizisi takip edilerek,.
Kazanan, n
girdi verildiğinde bilgisayarımda 10 dakika içinde en büyüğü için bir bölüm yazdıran program olacak 5
. Bağlar, en büyükler için bir bölüm bulmak için en kısa sürede kırılacakn
üç koşu boyunca ortalama , : bu nedenle çıktı zaman damgalarını içermelidir.
Önemli ayrıntılar:
- Ubuntu Precise'a sahibim, bu nedenle diliniz desteklenmiyorsa puan veremem.
- Intel Core2 Quad CPU'm var, bu yüzden multithreading kullanmak istiyorsanız 4'ten fazla iş parçacığı kullanmanın bir anlamı yok.
- Herhangi bir derleyici bayrağını veya uygulamasını kullanmamı istiyorsanız, cevabınızda açıkça belirtin.
- Girdiyi işlemek için kodunuzu özel olarak kullanamazsınız
5
. - Bulduğunuz her iyileştirmenin çıktısını almanız gerekmez. Örneğin giriş için
2
yalnızca bölümün çıktısını alabilirsinizn = 4
. Ancak, ilk 10 dakika içinde hiçbir şey çıkarmazsanız, o zaman puan vereceğimn = 0
.
n=59
ve daha az izin sayıların en fazla sayıdaki göre sıralamanextN
verirn=64
. İzin verilmeyen sayılar listesinin uzunluğuna göre (tekrarlar olabilir) sıralama çok hızlı bir şekilde zarif birn=30
desene yol açar .