ধরুন আমাদের একটি অ্যারে সংখ্যা এবং একটি মান k আছে। আমাদের পরপর পরের সংখ্যা বের করতে হবে যার যোগফল k দ্বারা বিভাজ্য।
সুতরাং, যদি ইনপুটটি k =3 সংখ্যা =[1,2,3,4,1] এর মত হয়, তাহলে আউটপুট 4 হবে কারণ পরবর্তীগুলি হল [3], [1,2], [1,2,3] ] এবং [2,3,4]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- x :=k আকারের একটি অ্যারে এবং 0 দিয়ে পূরণ করুন
- x[0] :=1
- r:=0, s:=0
- সংখ্যায় প্রতিটি উপাদানের জন্য, করুন
- s :=(s + elem) mod k
- r :=r + x[s]
- x[s] :=x[s] + 1
- রিটার্ন r
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(k, nums):
x = [0]*k
x[0] = 1
r=s=0
for elem in nums:
s = (s+elem) % k
r += x[s]
x[s] += 1
return r
k = 3
nums = [1,2,3,4,1]
print(solve(k, nums)) ইনপুট
3, [1,2,3,4,1]
আউটপুট
4