Hãy xác định f n (k) là tổng của đầu tiên k của các số tự nhiên [1,) trong đó mỗi số được lặp lại n lần.
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
Các đường chéo của điều này như là một mảng vuông tương tự như chuỗi OEIS A134546 .
Thử thách
Viết chương trình / hàm có hai số nguyên không âm n và k và xuất ra f n (k) .
Thông số kỹ thuật
- Quy tắc I / O tiêu chuẩn dụng .
- Sơ hở tiêu chuẩn bị cấm .
- Giải pháp của bạn có thể là 0 chỉ mục hoặc 1 chỉ mục cho n và / hoặc k nhưng vui lòng chỉ định đó.
- Thách thức này không phải là tìm ra cách tiếp cận ngắn nhất trong tất cả các ngôn ngữ, mà là tìm kiếm cách tiếp cận ngắn nhất trong mỗi ngôn ngữ .
- Mã của bạn sẽ là ghi theo byte , thường là trong mã hóa UTF-8, trừ khi được quy định khác.
- Các hàm dựng sẵn tính toán chuỗi này là cho phép nhưng bao gồm một giải pháp không dựa vào tích hợp được khuyến khích.
- Giải thích, ngay cả đối với các ngôn ngữ "thực tế", được khuyến khích .
Các trường hợp thử nghiệm
Trong các trường hợp thử nghiệm này, n là 1 chỉ mục và k là 0 chỉ mục.
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
Trong một vài định dạng tốt hơn:
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
Thực hiện tham khảo
Điều này được viết bằng Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
cho k
0-index không?
k
từ danh sách các số tự nhiên lặp lại, không phải số đầu tiênn*k
.