ধরুন একটি পথে n ব্লক রয়েছে, এবং একজন কর্মী ব্লকগুলিতে রঙিন টাইলস লাগাচ্ছেন। কর্মী এমনভাবে ব্লক লাগাচ্ছেন, যেমন পথের একটি ব্লক সংখ্যা যদি 4 বা/এবং 2 দ্বারা বিভাজ্য হয় তবে 42 নয়, সে সেখানে একটি রঙিন টাইল রাখে। আমাদের খুঁজে বের করতে হবে যে সে কয়টি ব্লক কভার করতে পারবে যদি সে k সংখ্যার রঙিন টাইলস দিয়ে শুরু করে থাকে।
সুতরাং, ইনপুট যদি k =16 এর মত হয়, তাহলে আউটপুট হবে 32।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- MOD =10^9 + 7
- ভাগফল :=(k / 20) এর তল মান
- অবশিষ্ট :=কে মোড 20
- যদি অবশিষ্টাংশ 0 এর সমান হয়, তাহলে
- রিটার্ন((42 * ভাগফল - 2) mod MOD)
- অন্যথায়,
- রিটার্ন((42 * ভাগফল + 2 * অবশিষ্ট) mod MOD)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(k): MOD = 10**9 + 7 quotient = k // 20 remainder = k % 20 if remainder == 0: return ((42 * quotient - 2) % MOD) else: return ((42 * quotient + 2 * remainder) % MOD) print(solve(16))
ইনপুট
16
আউটপুট
32