দুটি অ্যারে A এবং B দেওয়া থাকলে, C[i] = d*A[i] + B[i] ফর্মুলা দিয়ে অ্যারে C তৈরি করতে হবে। এখানে d হলো যেকোনো বাস্তব সংখ্যা। আমাদের এমন d খুঁজে বের করতে হবে যাতে অ্যারে C-তে শূন্যের সংখ্যা সর্বোচ্চ হয়। শূন্যের সংখ্যাও ফেরত দিতে হবে।
উদাহরণ
ইনপুট: A = [15, 40, 45], B = [4, 5, 6]
আউটপুট: d = -0.266666, শূন্যের সংখ্যা = 1
সমাধানের পদ্ধতি
- প্রতিটি 인ডেক্স i-তে, যদি A[i] এবং B[i] দুটোই শূন্য না হয়, তবে d = -B[i]/A[i] হিসাব করা হয়।
- এই d মানগুলো একটি ম্যাপে ফির্কোয়েন্সি গুনা করা হয়।
- যদি A[i] এবং B[i] দুটোই শূন্য হয়, তবে সেটা আলাদাভাবে কাউন্ট করা হয় (কারণ সেটা যেকোনো d-র জন্য শূন্য দেবে)।
- সর্বোচ্চ ফির্কোয়েন্সি வালা d মান বেছে নেওয়া হয়।
- শেষে সর্বোচ্চ ফির্কোয়েন্সি + দুটি শূন্য অ্যারে এর কাউন্ট ফেরত দেওয়া হয়।
পাইথন কোড
def find_d_zero(A, B):
n = len(A)
my_map = {}
count = 0
for i in range(n):
if B[i] != 0 and A[i] != 0:
val = (-1.0 * B[i]) / A[i]
if val not in my_map:
my_map[val] = 0
my_map[val] += 1
elif B[i] == 0 and A[i] == 0:
count += 1
maximum = 0
for item in my_map:
maximum = max(my_map[item], maximum)
for keys, values in my_map.items():
if values == maximum:
print("d =", keys)
break
print("Number of 0s:", maximum + count)
a = [15, 40, 45]
b = [4, 5, 6]
find_d_zero(a, b)
ইনপুট
[15, 40, 45], [4, 5, 6]
আউটপুট
d = -0.26666666666666666 Number of 0s: 1