একটি ১০০ মিটার দৈর্ঘ্যের সার্কুলার টিউবে 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