আমাদের N দৈর্ঘ্যের তিনটি বাইনারি সিকোয়েন্স A, B এবং C দেওয়া হয়েছে। প্রতিটি সিকোয়েন্স অ্যাবাইনারি সংখ্যার প্রতিনিধিত্ব করে। আমাদের নেই খুঁজে বের করতে হবে। A এবং B-এ বিটগুলির জন্য প্রয়োজনীয় ফ্লিপগুলি যাতে A এবং B-এর XOR C-তে পরিণত হয়। A XOR B C হয়ে যায়।
প্রথমে আসুন XOR অপারেশন -
-এর সত্য সারণী সম্পর্কে জেনে নিইX | Y | X XOR Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
উপরের সারণী থেকে আমরা লক্ষ্য করি যে X এবং Y-তে একই মানগুলির জন্য, X XOR Y ফলাফল 0 অন্যথায় ফলাফল 1। সুতরাং এটি C-তে পৌঁছানোর জন্য A এবং B তে ফ্লিপ করা বিটগুলি খুঁজে পেতে সহায়ক হবে। কেসগুলি হবে
- যদি A[i]==B[i] এবং C[i]==0 তাহলে ফ্লিপ না হয়,
- যদি A[i]==B[i] এবং C[i]==1 তাহলে A[i] বা B[i] ফ্লিপ করুন এবং ফ্লিপ কাউন্ট 1 দ্বারা বাড়ান
- যদি A[i]!=B[i] এবং C[i]==0 তাহলে A[i] বা B[i] ফ্লিপ করুন এবং ফ্লিপ কাউন্ট 1 বাড়িয়ে দিন
- যদি A[i]!=B[i] এবং C[i]==1 তাহলে ফ্লিপের প্রয়োজন নেই।
ইনপুট
A[]={ 0,0,0,0 } B[]={ 1,0,1,0 } C={1,1,1,1}
আউটপুট
প্রয়োজনীয় flips :2
ব্যাখ্যা
A[0] xor B[0] 0 xor 1 =1 C[0]=1 no flipA[1] xor B[1] 0 xor 0 =0 C[0]=1 ফ্লিপ কাউন্ট=1A[2 ] xor B[2] 0 xor 1 =1 C[0]=1 no flipA[3] xor B[3] 0 xor 0 =0 C[0]=1 flip count=2
ইনপুট
A[]={ 0,0,1,1 } B[]={ 0,0,1,1 } C={0,0,1,1}
আউটপুট
প্রয়োজনীয় flips :2
ব্যাখ্যা
A[0] xor B[0] 0 xor 0 =0 C[0]=0 no flipA[1] xor B[1] 0 xor 0 =0 C[0]=0 no flipA[2] xor B[2] 1 xor 1 =0 C[0]=1 ফ্লিপ কাউন্ট=1A[3] xor B[3] 1 xor 1 =0 C[0]=1 ফ্লিপ কাউন্ট=2নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
অ্যারে a[], b[] এবং c[] ব্যবহার করা হয় বাইনারি সংখ্যা সংরক্ষণ করতে।
-
ফাংশন flipCount(int A[], int B[], int C[], int n) অ্যারে a, b, c এবং তাদের দৈর্ঘ্য n এ ইনপুট নেয় এবং A[] বা B[এর বিটে প্রয়োজনীয় ফ্লিপের গণনা প্রদান করে। ] A xorB
হিসাবে C[] পেতে -
পরিবর্তনশীল গণনা ফ্লিপ গণনা প্রতিনিধিত্ব করে এবং 0 দিয়ে আরম্ভ করা হয়।
-
i =0 থেকে i
ঘরে প্রতিটি বিটকে লুপ ট্রাভার্সের জন্য ব্যবহার করা হচ্ছে -
প্রতিটি বিটের জন্য A[i] এবং B[i]। যদি তারা সমান হয় এবং C[i] হয় 1 বৃদ্ধির সংখ্যা।
-
প্রতিটি বিটের জন্য A[i] এবং B[i]। যদি তারা সমান না হয় এবং C[i] হয় 0 বৃদ্ধির সংখ্যা।
-
পছন্দসই ফলাফল হিসাবে গণনা ফেরত দিন।
উদাহরণ
#includeনেমস্পেস ব্যবহার করে std;int flipCount(int A[], int B[], int C[], int N){ int count =0; (int i=0; i আউটপুট
ফ্লিপ করার জন্য ন্যূনতম বিট যাতে A এবং B এর XOR C :2 এর সমান হয়