Đề bài
Xem bản gốc (English)Bắt đầu với n. Nếu n là số chẵn, chia n cho 2; nếu n là số lẻ, nhân n với 3 rồi cộng 1. Lặp lại cho đến khi giá trị là 1. Bao gồm cả giá trị bắt đầu và số 1 cuối cùng trong kết quả của bạn.
Cài đặt hàm collatz_sequence(n).
Đầu vào
n: Số nguyên dương bắt đầu.
Đầu ra
Trả về toàn bộ dãy số theo thứ tự.
Ràng buộc
1 ≤ n ≤ 10.000. Với mọi giá trị trong khoảng này, dãy số sẽ luôn đạt tới 1 theo quy tắc trên; mọi giá trị trong dãy đều nằm trong phạm vi số nguyên 64-bit có dấu.
Ví dụ
Đầu vào:
n = 6
Kết quả mong đợi:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
Đầu vào:
long long n = 6;
Kết quả mong đợi:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
Đầu vào:
long n = 6;
Kết quả mong đợi:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};
Giải thích
6 là số chẵn nên chia thành 3. Sau đó 3 thành 10. Tiếp tục áp dụng quy tắc cho đến khi đạt 1.
Đầu vào:
n = 1
Kết quả mong đợi:
expected = [1]
Đầu vào:
long long n = 1;
Kết quả mong đợi:
std::vector<long long> expected = {1};
Đầu vào:
long n = 1;
Kết quả mong đợi:
long[] expected = new long[] {1};
Giải thích
Giá trị bắt đầu đã là 1 nên không cần thực hiện phép biến đổi nào.
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.