কম্পিউটার

পাইথনে ভাজকের সংখ্যার যোগফল বের করার প্রোগ্রাম


ধরুন আমাদের দুটি পূর্ণসংখ্যা m এবং a দেওয়া হল। এখন n =p1 (a + 1) *p2 (a + 2) **...*pm (a + m) , যেখানে pi i-তম মৌলিক সংখ্যা এবং i> 0। আমাদের k এর মান খুঁজে বের করতে হবে, যেখানে k =f(x) মানের n এর সমষ্টি। এখানে f(x) মান হল n এর প্রতিটি ভাজকের ভাজক মানের সংখ্যা।

সুতরাং, যদি ইনপুট হয় m =2, a =1, তাহলে আউটপুট হবে 60।

  • তাই, n =2^2 x 3^3
  • n =4 x 27
  • n =108

108 এর ভাজক হল:1, 2, 3, 4, 6, 9, 12, 18, 27, 36, 54, 108

প্রতিটি ভাজকের f(x) মান হল:f(1) + f(2) + f(3) + f(4) + f(6) + f(9) + f(12) + f(18) + f(27) + f(36) + f(54) + f(108)

=1 + 2 + 2 + 4 + 4 + 3 + 5 + 6 + 4 + 9 + 8 + 12

=৬০।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • MOD :=10^9 + 7
  • একটি ফাংশন সংজ্ঞায়িত করুন summ()। এটি n
      লাগবে
    • (n * (n + 1)) / 2) এর রিটার্ন ফ্লোর মান
  • একটি ফাংশন বিভাগ() সংজ্ঞায়িত করুন। এটি a, b, mod
      লাগবে
    • যদি একটি মোড b 0 এর মত হয়, তাহলে
      • a / b এর ফ্লোর ভ্যালু
    • a :=a + mod * division((-a modulo b), (mod modulo b), b)
    • (a / b) মডুলো মোডের ফ্লোর ভ্যালু
  • mat :=একটি নতুন তালিকা যেখানে একটি মান 1 আছে
  • যখন মাদুরের আকার <=m + a, do
    • ম্যাটের শেষে সন্নিবেশ করান (ম্যাটের শেষ উপাদান * summ(len(mat)+1)) mod MOD
  • রিটার্ন বিভাগ (ম্যাট[এম + এ], ম্যাট[এ], এমওডি)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

MOD = 10**9 + 7
def summ(n):
   return ((n) * (n + 1)) // 2

def division(a, b, mod):
   if a % b == 0:
      return a // b
   a += mod * division((-a) % b, mod % b, b)
   return (a // b) % mod

def solve(m, a):
   mat = [1]
   while len(mat) <= m + a:
      mat.append((mat[-1] * summ(len(mat)+1)) % MOD)
   return division(mat[m + a] , mat[a], MOD)

print(solve(2, 1))

ইনপুট

2, 1

আউটপুট

60

  1. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  2. পাইথন প্রোগ্রাম একটি তালিকার ক্ষুদ্রতম সংখ্যা খুঁজে বের করতে

  3. পাইথন প্রোগ্রামে একটি সংখ্যার জোড় গুণনীয়কের সমষ্টি খুঁজুন

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম