কম্পিউটার

পাইথনে একটি অসীম ক্রম থেকে উত্পন্ন ভেক্টরের স্কেলার পণ্যগুলি খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের তিনটি পূর্ণসংখ্যা 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

  1. পাইথনে প্রদত্ত n এর জন্য প্রদত্ত অনুক্রমের শেষ সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সাব-ট্রির নোড মানের সমষ্টি থেকে ন্যূনতম মান বের করার প্রোগ্রাম

  3. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ফেরিস হুইল থেকে লাভ সর্বাধিক করার জন্য প্রয়োজনীয় ন্যূনতম ঘূর্ণনগুলি খুঁজে বের করার জন্য প্রোগ্রাম