मान लीजिए कि हमारे पास एक संख्या n है, हमें बाइनरी स्ट्रिंग के दशमलव मान को 1 से n के बाइनरी अभ्यावेदन को एक-एक करके क्रम में खोजना होगा, यदि उत्तर बहुत बड़ा है तो रिटर्न उत्तर मॉड्यूल 10^9 + 7.पी>
इसलिए, यदि इनपुट n =4 की तरह है, तो आउटपुट 220 होगा, क्योंकि 1 से 4 तक बाइनरी प्रतिनिधित्व को जोड़कर "1" + "10" + "11" + "100" =110111000 होगा, यह बाइनरी है 220 का प्रतिनिधित्व।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- उत्तर:=1
- म :=10^9+7
- 2 से n की श्रेणी में i के लिए, करें
- उत्तर :=पाली उत्तर (मैं की बिट लंबाई) बार की संख्या
- उत्तर:=(उत्तर+i) मॉड एम
- वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): ans = 1 m = (10**9+7) for i in range(2,n+1): ans = ans<<i.bit_length() ans = (ans+i) % m return ans n = 4 print(solve(n))
इनपुट
4
आउटपुट
220