मान लीजिए एक पथ में n ब्लॉक हैं, और एक कार्यकर्ता ब्लॉकों पर रंगीन टाइलें लगा रहा है। कार्यकर्ता ब्लॉकों को इस तरह लगा रहा है कि यदि पथ में एक ब्लॉक संख्या 4 से विभाज्य है या/और 2 से विभाज्य है लेकिन 42 से नहीं, तो वह वहां एक रंगीन टाइल लगाता है। हमें उन ब्लॉकों की संख्या पता लगानी है जिन्हें वह कवर कर सकता है यदि उसने k रंगीन टाइलों के साथ शुरुआत की है।
तो, यदि इनपुट k = 16 है, तो आउटपुट 32 होगा।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- MOD = 10^9 + 7
- quotient := k / 20 का फ्लोर मान
- remainder := k mod 20
- यदि remainder, 0 के समान है, तो
- ((42 * quotient - 2) mod MOD) लौटाएं
- अन्यथा,
- ((42 * quotient + 2 * remainder) 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