এই সমস্যাতে, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল দেওয়া ইন্টিজার N-এর প্রথম তিন এবং শেষ তিন বিটের ডেসিমেল কনভার্সন বের করা।
উদাহরণ দেখি:
ইনপুট : 57 আউটপুট : 71
সমাধানের পদ্ধতি
একটি সহজ সমাধান হল সংখ্যা n কে বাইনারি এ কনভার্ট করে বিটগুলো একটি অ্যারেতে স্টোর করা। এরপর অ্যারে থেকে প্রথম তিন এবং শেষ তিন বিটকে আলাদা আলাদা নম্বরে কনভার্ট করা। দুটি সেট বিটের ডেসিমেল কনভার্সনই আমাদের রেজাল্ট।
উদাহরণস্বরূপ, সংখ্যা ৮০ নিই।
৮০-এর বাইনারি কনভার্সন হল 1010000।
প্রথম তিন বিট (101)-এর ডেসিমেল কনভার্সন হল ৫।
শেষ তিন বিট (000)-এর ডেসিমেল কনভার্সন হল ০।
সুতরাং আউটপুট হল ৫ ০।
উদাহরণ
#include <bits/stdc++.h> using namespace std; void convtbnTodcml(int n) { int arr[64] = { 0 }; int x = 0, index; for (index = 0; n > 0; index++) { arr[index] = n % 2; n /= 2; } x = (index < 3) ? 3 : index; int d = 0, p = 0; for (int index = x - 3; index < x; index++) d += arr[index] * pow(2, p++); cout << d << " "; d = 0; p = 0; for (int index = 0; index < 3; index++) d += arr[index] * pow(2, p++); cout << d; } int main() { int n = 57; cout<<"Decimal conversion of first and last bits of the number "<<n<<" is "; convtbnTodcml(n); return 0; }
আউটপুট
Decimal conversion of first and last bits of the number 57 is 7 1