F n (k) 'yi , her sayının n kez tekrarlandığı doğal sayıların [1, ∞) ilk k terimlerinin toplamı olarak tanımlayalım .
k | 0 1 2 3 4 5 6 7 8 9
--------+-------------------------------------------------
f_1(k) | 0 1 3 6 10 15 21 28 36 45
deltas | +1 +2 +3 +4 +5 +6 +7 +8 +9
--------+-------------------------------------------------
f_2(k) | 0 1 2 4 6 9 12 16 20 25
deltas | +1 +1 +2 +2 +3 +3 +4 +4 +5
--------+-------------------------------------------------
f_3(k) | 0 1 2 3 5 7 9 12 15 18
deltas | +1 +1 +1 +2 +2 +2 +3 +3 +3
Bunun bir kare dizi olarak anti-diyagonalleri OEIS dizisi A134546'ya benzer .
Meydan okuma
Negatif olmayan iki n ve k tamsayısını alan ve f n (k) çıkışları alan bir program / işlev yazın .
Özellikler
- Standart I / O kuralları geçerlidir .
- Standart boşluklar vardır yasak .
- Çözümünüz n ve / veya k için 0 veya 1 dizinli olabilir, ancak lütfen hangisini belirtin.
- Bu zorluk tüm dillerde en kısa yaklaşımı bulmak değil, her dilde en kısa yaklaşımı bulmakla ilgilidir .
- Kodunuz bayt olarak puanlanacak , aksi belirtilmedikçe, genellikle UTF-8 kodlamasında .
- Bu diziyi hesaplayan yerleşik işlevlere izin verilir, ancak yerleşik bir teknolojiye dayanmayan bir çözüm dahil edilmesi önerilir.
- "Pratik" diller için bile açıklamalar teşvik edilmektedir .
Test senaryoları
Bu test örneklerinde n , 1-indekslenir ve k , 0-indekslenir.
n k fn(k)
1 2 3
2 11 36
11 14 17
14 21 28
21 24 27
24 31 38
31 0 0
Birkaç iyi biçimde:
1 2
2 11
11 14
14 21
21 24
24 31
31 0
1, 2
2, 11
11, 14
14, 21
21, 24
24, 31
31, 0
Referans uygulaması
Bu Haskell'de yazılmıştır .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
için k
endeksli 0?
k
terimleri değil, yalnızca tekrarlanan doğal sayılar listesindeki ilk terimleri toplarsınız n*k
.