ধরুন আমাদের তিনটি পূর্ণসংখ্যা c, m, এবং n দেওয়া হল। আমাদের একটি অসীম ক্রম তৈরি করতে হবে, যেখানে প্রথম মানটি 0, দ্বিতীয় মানটি c এবং তৃতীয় মান থেকে এটি ki =(ki-2 + ki-1) mod m এর সমান। আমাদের কে2n+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:=0s দিয়ে আরম্ভ করা 2*n+2 আকারের একটি নতুন তালিকা
- 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 পরিসরে, 2 দ্বারা বাড়ান, করুন
- temp :=(temp_arr[i] * temp_arr[i + 2] + temp_arr[i + 1] * temp_arr[i + 3]) mod m
- Arr2 এর শেষে temp সন্নিবেশ করুন
- temp :=(temp_arr[i] * temp_arr[i+4] + temp_arr[i+1] * temp_arr[i+5]) mod m
- Arr2 এর শেষে temp সন্নিবেশ করুন
- temp :=(temp_arr[2 * n-2] * temp_arr[2 * n] + temp_arr[2 * n-1] * temp_arr[2 * n+1]) mod m
- Arr2 এর শেষে temp সন্নিবেশ করুন
- arr2 থেকে ডুপ্লিকেট আইটেম সরান
- 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