Lý lịch
Hãy xem xét một chuỗi được xác định như sau:
- Phần tử đầu tiên là 0;
- Phần tử thứ hai là 4;
- Từ phần tử thứ ba trở đi, giá trị của nó có thể được tính bằng:
- Lấy tập hợp các số nguyên từ 0 cho đến phần tử trước của chuỗi (bao gồm hoặc độc quyền, không thành vấn đề);
- Xóa mọi số nguyên đã xuất hiện trước đó trong chuỗi khỏi tập hợp;
- Cộng các yếu tố còn lại của tập hợp; đó là giá trị bạn muốn
Thật thú vị, trình tự này dường như chưa có trên OEIS .
Nhiệm vụ
Viết chương trình hoặc hàm lấy số nguyên n làm đầu vào và xuất phần tử thứ n của chuỗi.
Các trường hợp thử nghiệm
Một vài yếu tố đầu tiên của chuỗi là:
- 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7 Sự 10 + 12 Sự 44)
- 468930 (1 + 2 + 3 + 5 + 7 Sự 10 + 12 Sự 44 + 46 Sự 968)
Làm rõ
- Về lý thuyết, chương trình của bạn sẽ có thể xử lý n tùy ý nếu chạy trên một biến thể ngôn ngữ của bạn có số nguyên lớn không giới hạn và truy cập vào một lượng bộ nhớ không giới hạn. (Các ngôn ngữ không có bignums dường như không thể vượt quá 468930, nhưng đó không phải là lý do để mã hóa các câu trả lời.)
- Bạn có thể chọn lập chỉ mục dựa trên 0 hoặc dựa trên 1 cho chuỗi (ví dụ: tùy thuộc vào việc n = 1 trả về phần tử đầu tiên, n = 2 phần tử thứ hai, v.v. hoặc liệu n = 0 có trả về phần tử đầu tiên không , n = 1 phần tử thứ hai, v.v.).
- Không có yêu cầu về thuật toán bạn sử dụng, cũng như về hiệu quả của nó; bạn có thể trực tiếp thực hiện định nghĩa của chuỗi (mặc dù nó thực sự không hiệu quả) và bạn cũng có thể thực hiện một thuật toán khác dẫn đến cùng một kết quả.
Điều kiện chiến thắng
Đây là môn đánh gôn , vì vậy chương trình đúng ngắn nhất, được đo bằng byte, sẽ thắng.