ডুপ্লিকেট এলিমেন্ট ধারণকারী একটি অ্যারে দেওয়া আছে। কাজ হলো অ্যারেতে যেসব এলিমেন্ট নন-রিপিটিং বা ডISTINCT, তাদের গুণফল বের করে ফলাফল দেখানো।
উদাহরণ
ইনপুট: arr[] = {2, 1, 1, 2, 3, 4, 5, 5} আউটপুট: 120 ব্যাখ্যা: ১, ২, ৫ একাধিকবার রিপিট হয়েছে তাই প্রথম occurrence নেওয়া হয়েছে। ফলাফল: 1 * 2 * 3 * 4 * 5 = 120
ইনপুট: arr[] = {1, 10, 9, 4, 2, 10, 10, 45, 4} আউটপুট: 32400 ব্যাখ্যা: ১০ এবং ৪ রিপিট হয়েছে। ফলাফল: 1 * 10 * 9 * 4 * 2 * 45 = 32400
প্রোগ্রামে ব্যবহৃত পদ্ধতি -
- ডুপ্লিকেট এলিমেন্ট অ্যারেতে ইনপুট নেওয়া।
- বेहतर পদ্ধতিতে অ্যারে অ্যাসেন্ডিং অর্ডারে সর্ট করা যাতে রিপিটিং এলিমেন্ট সহজে চিনতে পারা যায়।
- অ্যারেতে সব ডISTINCT এলিমেন্ট খুঁজে বের করে গুণফল করা।
- ফাইনাল ফলাফল প্রিন্ট করা।
অ্যালগরিদম
শুরু
ধাপ ১ -> অ্যারেতে সব ডISTINCT এলিমেন্টের গুণফল বের করার ফাংশন ঘোষণা
int find_Product(int arr[], int size)
int prod = 1 ঘোষণা এবং সেট
unordered_set s ভেরিয়েবল তৈরি
লুপ i = 0 থেকে i < size এবং i++
যদি s.find(arr[i]) == s.end()
prod *= arr[i] সেট
s.insert(arr[i]) কল
শেষ
শেষ
return prod
ধাপ ২ -: main()-এ
int arr[] = { 2, 1, 1, 2, 3, 4, 5, 5 } ঘোষণা এবং সেট
size = sizeof(arr) / sizeof(int) হিসাব
find_Product(arr, size) কল
শেষ
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
// নন-রিপিটিং এলিমেন্টের গুণফল গণনা
int find_Product(int arr[], int size) {
int prod = 1;
unordered_set s;
for (int i = 0; i < size; i++) {
if (s.find(arr[i]) == s.end()) {
prod *= arr[i];
s.insert(arr[i]);
}
}
return prod;
}
int main() {
int arr[] = { 2, 1, 1, 2, 3, 4, 5, 5 };
int size = sizeof(arr) / sizeof(int);
cout << "product of all non-repeated elements are : " << find_Product(arr, size);
return 0;
}
আউটপুট
product of all non-repeated elements are : 120