Các Collatz trình tự (còn gọi là bài toán 3x + 1) là nơi mà bạn bắt đầu với bất kỳ số nguyên dương, ví dụ này, chúng ta sẽ sử dụng 10, và áp dụng này tập hợp các bước để nó:
if n is even:
Divide it by 2
if n is odd:
Multiply it by 3 and add 1
repeat until n = 1
10 là chẵn, vì vậy chúng ta chia cho 2 để nhận 5. 5 là số lẻ, vì vậy chúng ta nhân 3 và thêm 1 để nhận được 16. 16 là chẵn, vì vậy hãy cắt nó thành một nửa để có được 8. Một nửa số 8 là 4, một nửa 4 là 2 và một nửa của 2 là 1. Vì điều này đã đưa chúng tôi 6 bước, chúng tôi nói rằng 10 có khoảng cách dừng là 6.
Số Super Collatz là số có khoảng cách dừng lớn hơn khoảng cách dừng của mọi số nhỏ hơn số đó. Ví dụ: 6 là số Super Collatz vì 6 có khoảng cách dừng là 8, 5 có khoảng cách dừng là 5, 4 có 2, 3 có 7, 2 có 1 và 1 có 0. ( A006877 trong OEIS) Bạn phải lấy một số n làm đầu vào và xuất ra tất cả các số Super Collatz lên đến n .
Quy tắc
Chương trình đầy đủ hoặc chức năng được chấp nhận.
Bạn không thể tính toán trước hoặc mã hóa trình tự Super Collatz.
Bạn có thể lấy đầu vào ở bất kỳ định dạng hợp lý.
Đầu ra có thể được trả về dưới dạng danh sách từ hàm hoặc được in ra STDOUT hoặc tệp. Bất cứ điều gì là thuận tiện nhất.
Đầu vào không hợp lệ (không phải số, số thập phân, số âm, v.v.) dẫn đến hành vi không xác định.
Mẫu trăn không có lông
def collatzDist(n):
if n == 1:
return 0
if n % 2 == 0:
return 1 + collatzDist(n / 2)
return 1 + collatzDist((n * 3) + 1)
n = input()
max = -1
superCollatz = []
for i in range(1, n + 1):
dist = collatzDist(i)
if dist > max:
superCollatz.append(i)
max = dist
print superCollatz
Mẫu IO:
#in #out
4 --> 1, 2, 3
50 --> 1, 2, 3, 6, 7, 9, 18, 25, 27
0 --> invalid
10000 --> 1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171
Ngoài ra đây là 44 số Super Collatz đầu tiên:
1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171, 10971, 13255, 17647, 23529, 26623, 34239, 35655, 52527, 77031, 106239, 142587, 156159, 216367, 230631, 410011, 511935, 626331, 837799