কম্পিউটার টিউটোরিয়াল

Python দিয়ে অড্ড সম ওয়ালা সাব-অ্যারে সংখ্যা বের করার প্রোগ্রাম


মান লাগিয়ে, আমাদের একটি অ্যারে arr আছে। আমাদের অড্ড সম ওয়ালা সাব-অ্যারে সংখ্যা বের করতে হবে। যদি উত্তর খুব বড় হয়, তবে 10^9+7 মডুলো দিয়ে রিটার্ন করুন।

যেমন, ইনপুট arr = [8,3,7] হলে, আউটপুট হবে 3 কারণ সব সাব অ্যারে [[8],[3],[7],[8,3],[3,7],[8,3,7]]। তাদের সম মান [8,3,7,11,10,18] তাই তিনটি অড্ড সম [3,7,11]।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:

  • freq := [1, 0] দিয়ে একটি লিস্ট
  • ans := 0
  • prefix := 0
  • arr-এ থাকা প্রতিটি x জন্য:
    • prefix := prefix + x
    • ans := ans + freq[1 XOR prefix AND 1]
    • freq[prefix AND 1] := freq[prefix AND 1] + 1
  • ans mod (10^9+7) রিটার্ন করুন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

উদাহরণ

def solve(arr):
    freq = [1, 0]
    ans = prefix = 0
    for x in arr:
        prefix += x
        ans += freq[1 ^ prefix&1]
        freq[prefix & 1] += 1
    return ans % (10**9+7)
arr = [8,3,7]
print(solve(arr))

ইনপুট

[8,3,7]

আউটপুট

3

  1. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম

  2. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার পাইথন প্রোগ্রাম

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

  4. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা (Duplicate)