কম্পিউটার টিউটোরিয়াল

সার্কুলার টিউবে বল কতবার সংঘর্ষ করবে সেটা বের করা

একটি ১০০ মিটার দৈর্ঘ্যের সার্কুলার টিউবে nটি বল আছে। প্রতিটি বল শুরুতে স্টার্টিং পয়েন্ট থেকে i মিটার দূরত্বে। বলগুলো ০.১ মিটার/সেকেন্ড গতিতে ঘুরে। দুটি বল মিললে সংঘর্ষ হয় এবং দিক বদলায়। ১০⁹+৬ সেকেন্ড পর কতবার সংঘর্ষ হবে সেটা বের করতে হবে।

ইনপুট: [0, 10] → আউটপুট: 400000। দুটি বল যদি বিপরীত দিকেও ঘুরে তবে ৪০০০০০ বার সংঘর্ষ হবে।

সমাধানের ধাপসমূহ

  • input_array সর্ট করুন

  • size = len(input_array)

  • lap_count = (10⁵) × 2

  • output = 2 × lap_count × (size//2) × (size - size//2)

  • সোজা সटी permanecerボール চেক করুন (input_array[i]+1 == input_array[i+1]) তবে output += 2

  • output রিটার্ন করুন

উদাহরণ (Python)

def solve(input_array):
    input_array.sort()
    size = len(input_array)
    lap_count = (10**5) * 2
    output = 2 * lap_count * (size // 2) * (size - size // 2)
    stop = 0
    for i in range(size - 1):
        if stop != 1:
            if input_array[i] + 1 == input_array[i+1]:
                output += 2
                stop = 1
            else:
                stop = 0
        else:
            stop = 0
    return output

print(solve([0, 10]))

ইনপুট

[0, 10]

আউটপুট

400000
  1. পাইথনে কতগুলো রেখা আঁটকাচ্ছে তা বের করার প্রোগ্রাম

  2. পাইথনে গ্রাফ সবাই দ্বারা ট্রাভার্সেবল কিনা চেক করার প্রোগ্রাম

  3. গোডাউনে কতগুলো বক্স রাখা যায় তা বের করার পাইথন প্রোগ্রাম

  4. কতগুলো কিউব কাটা হবে সেটা বের করার প্রোগ্রাম