ধরুন আমাদের তিনটি মান আছে n, মোট এবং k। এখন আকার n এর একটি তালিকা বিবেচনা করুন যার যোগফল মোটের সমান এবং যেখানে যে কোনো দুটি পরপর উপাদানের মধ্যে পরম পার্থক্য সর্বাধিক 1। আমাদের এই ধরনের তালিকার সূচক k-তে সর্বাধিক মান খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি n =5 মোট =15 k =3 এর মত হয়, তাহলে আউটপুট হবে 4, কারণ একটি সম্ভাব্য তালিকা হল [3,2,3,4,3], সর্বাধিক উপাদান যা সূচক 3 এ পাওয়া যায়। হল 4.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- x :=0
- নিম্নলিখিতটি বারবার করুন, করুন
- a :=k + 1
- s :=(x + x - a + 1) * ফ্লোর যদি a/2
- a :=n - k
- s :=s +(x + x - a + 1) * a/2 এর তল
- s :=s - x
- যদি s> মোট হয়, তাহলে
- লুপ থেকে বেরিয়ে আসুন
- x :=x + 1
- ফেরত x - 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(n, total, k): x = 0 while 1: a = k + 1 s = (x + x - a + 1) * a // 2 a = n - k s += (x + x - a + 1) * a // 2 s -= x if s > total: break x += 1 return x - 1 n = 5 total = 15 k = 3 print(solve(n, total, k))
ইনপুট
5, 15, 3
আউটপুট
4