الگوریتمی را در نظر بگیرید که با دریافت یک عدد $n$ ، دنبالهای از اعداد را تولید میکند. به این ترتیب که اگر $n$ زوج بود، تقسیم آن بر عدد 2 و اگر فرد بود، $ 3n + 1 $ را به عنوان جملهی بعدی دنباله و مقدار جدید برای $n$ تولید کرده و عملیات را تا زمانی که مقدار $n$ برابر 1 شود، ادامه دهد. برای مثال، دنبالهی زیر با شروع از $ n = 22 $ تولید میشود:
[ 22 ; 11 ; 34 ; 17 ; 52 ; 26 ; 13 ; 40 ; 20 ; 10 ; 5 ; 16 ; 8 ; 4 ; 2 ; 1 ]
حدس زده شده است که چنین دنبالهای به ازای هر عدد صحیح $n$ در نهایت به عدد 1 ختم خواهد شد. این حدس حداقل برای اعداد کمتر از 1000000 صحیح است.
برای هر ورودی $n$ منظور از cycle-length عدد $n$ تعداد اعدادی است که با شروع از آن عدد تا رسیدن به عدد 1 ( شامل خود این عدد) توسط الگوریتم فوق تولید میشوند. به عنوان مثال، cycle-length به ازای $n = 22$ عدد 16 است. بر اساس این تعریف، برنامهی شما باید با دریافت دو عدد $i$ و $j$ ، مقدار حداکثر cycle-length را به ازای اجرای الگوریتم روی اعداد این بازه (شامل خود $i$ و $j$) مشخص نماید.
ادامه مطلب
برچسب:
نویسنده: آرشان حبیبی