PY12-15. Eng uzun Kollats zanjiri
Kollats qoidasi: son juft bo‘lsa — ikkiga bo‘linadi, toq bo‘lsa — 3x + 1 ga almashtiriladi. x ning zanjir uzunligi — 1 ga yetguncha qilingan qadamlar soni: 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 — 8 qadam.
1 … n orasida zanjiri eng uzun sonni toping (bir nechta bo‘lsa — eng kichigini). Dasturchi yozgan kod:
def steps(x):
if x == 1:
return 0
if x % 2 == 0:
return 1 + steps(x // 2)
return 1 + steps(3 * x + 1)
n = int(input())
best = max(range(1, n + 1), key=steps)
print(best, steps(best))Natija to‘g‘ri, lekin katta n da «Vaqt chegarasi». Tezlashtiring.
Kirish ma’lumotlari
Bitta butun son n.
Chiqish ma’lumotlari
Ikki son: zanjiri eng uzun son va uning zanjir uzunligi.
Cheklovlar
2 ≤ n ≤ 3·10⁵
Misollar
Kirish
10
Chiqish
9 19
Kirish
2
Chiqish
2 1
Tushuntirish
n = 10: 9 ning zanjiri 19 qadam — eng uzun. Javob 9 19.
Qoralama doskasi
Kod yozish
Kod yuborish
10 ta test
Yechim yuborish uchun
tizimga kiring.