मान लीजिए हमें तीन पूर्णांक संख्याएँ c, m और n दी गई हैं। हमें एक अनंत अनुक्रम उत्पन्न करना है, जहाँ पहला मान 0 है, दूसरा मान c है, और तीसरे मान से आगे यह ki =(ki-2 + ki-1) mod m के बराबर है। हमें श्रृंखला में सभी मूल्यों को आइटम k2n+1 तक उत्पन्न करना होगा। अब श्रृंखला के मूल्यों से; हम क्रम में दो क्रमागत मान लेते हैं क्योंकि x और y द्वि-आयामी सदिश के निर्देशांक हैं और n संख्या में सदिश उत्पन्न करते हैं। ध्यान देने योग्य बात यह है कि हम तीसरे मान से अनुक्रम में मानों का उपयोग करते हैं। एक और समुच्चय S है जहाँ प्रत्येक मान सदिश i और सदिश j का अदिश गुणनफल है जहाँ 1 <=i, j <=n और i !=j। हमें समुच्चय S में विभिन्न अवशेषों की संख्या ज्ञात करनी है। यदि मान बहुत बड़ा है, तो हम इसे m से संशोधित करते हैं।
तो, अगर इनपुट 5, 6, 4 की तरह है, तो आउटपुट 3 होगा
उत्पन्न अनुक्रम है:[0, 5, 5, 4, 3, 1, 4, 5, 3, 2]।
वैक्टर हैं:(5, 4), (3, 1), (4, 5), (3, 2)।
सदिशों के अदिश गुणनफल से, सेट S में केवल तीन अवशेष मान mod 6 होते हैं।
इस प्रकार परिणाम 3 मॉड 6 =3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि n 1 के समान है, तो
- वापसी 0
- अन्यथा,
- temp_arr:=आकार 2*n+2 की एक नई सूची 0s के साथ आरंभ की गई
- temp_arr[0] :=0
- temp_arr[1] :=c
- arr2 :=एक नई सूची
- 2 से 2 * n+2 की सीमा में, के लिए
- temp_arr[i] :=(temp_arr[i - 1] + temp_arr[i - 2]) mod m
- 2 से 2 * n-2 की सीमा में i के लिए, 2 की वृद्धि करें
- अस्थायी:=(temp_arr[i] * temp_arr[i + 2] + temp_arr[i + 1] * temp_arr[i + 3]) mod m
- arr2 के अंत में अस्थायी डालें
- अस्थायी:=(temp_arr[i] * temp_arr[i+4] + temp_arr[i+1] * temp_arr[i+5]) mod m
- arr2 के अंत में अस्थायी डालें
- अस्थायी:=(temp_arr[2 * n-2] * temp_arr[2 * n] + temp_arr[2 * n-1] * temp_arr[2 * n+1]) mod m
- arr2 के अंत में अस्थायी डालें
- गिरफ्तारी2 से डुप्लिकेट आइटम हटाएं
- arr2 का वापसी आकार
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(c, m, n): if (n == 1): return 0 else: temp_arr=[0 for i in range(2 * n+2)] temp_arr[0] = 0 temp_arr[1] = c arr2 = [] for i in range(2, 2 * n+2): temp_arr[i] = (temp_arr[i - 1] + temp_arr[i - 2]) % m for i in range(2, 2 * n-2, 2): temp = (temp_arr[i] * temp_arr[i + 2] + temp_arr[i + 1] * temp_arr[i + 3]) % m arr2.append(temp) temp = (temp_arr[i] * temp_arr[i+4] + temp_arr[i+1] * temp_arr[i+5]) % m arr2.append(temp) temp = (temp_arr[2 * n-2] * temp_arr[2 * n] + temp_arr[2 * n- 1] * temp_arr[2 * n+1]) % m arr2.append(temp) arr2 = set(arr2) return len(arr2) print(solve(5, 6, 4))
इनपुट
5, 6, 4
आउटपुट
3