সমস্যা
অ্যারেতে সব এলিমেন্ট m বার করে আছে, ছাড়া একটি। সেটি খুঁজে বের করুন।
বিট ম্যানিপুলেশন সমাধান
- প্রতিটি বিট পজিশন (০ থেকে ৩১) এর জন্য সেট বিটের সংখ্যা গুনুন।
- যে বিটের কাউন্ট
m-দিয়ে ভাগশেষ নন-জিরো, সেটি রেজাল্টের সেই বিটে ১ হবে।
অ্যালগরিদম
INT_SIZE = 32(ইন্টের বিট সংখ্যা)।count[32] = {0}।- প্রতিটি বিট
iএবং প্রতিটি এলিমেন্টarr[j]এর জন্য:- যদি
(arr[j] & (1< তবেcount[i]++।
- যদি
res = 0। প্রতিটিiএর জন্য:res += (count[i] % m) * (1<।
C++ কোড
#include <bits/stdc++.h>
using namespace std;
int selectUnique(unsigned int arr[], int size, int m) {
int INT_SIZE = 8 * sizeof(unsigned int); // 32
int count[INT_SIZE] = {0};
for (int i=0; i
আউটপুট
5