মান লেযিয়ে একটি সংখ্যা N দেওয়া আছে, আমাদের "০" এবং "১" দিয়ে গঠিত একটি স্ট্রিং খুঁজে বের করতে হবে যা এর বেস -২ (নেগেটিভ টু) মান উপস্থাপন করে। রিটার্ন করা স্ট্রিংয়ের লিডিং জিরো থাকবে না, স্ট্রিংটি যদি ঠিক "০" না হয়। ইনপুট ২ হলে আউটপুট হবে "১১০", কারণ (-2)² + (-2)¹ + (-2)⁰ = ২।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -
ret := খালি স্ট্রিং
যদি N == 0 হয়, "০" রিটার্ন করুন
যখন N ≠ ০
rem := N % (-2)
N := N / (-2)
যদি rem < 0 হয়, rem := rem + 2 এবং N++ করুন
ret := ret + rem (স্ট্রিং হিসেবে)
ret স্ট্রিংটি রিভার্স করুন
ret রিটার্ন করুন
নিচের বাস্তবায়নটি দেখে আরও ভালো বুঝতে পারবেন -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: string baseNeg2(int N) { string ret = ""; if(N == 0) return "0"; while(N){ int rem = N % (-2); N /= -2; if(rem < 0) rem += 2, N++; ret += to_string(rem); } reverse(ret.begin(), ret.end()); return ret; } }; main(){ Solution ob; cout << (ob.baseNeg2(17)); }ইনপুট
17
আউটপুট
10001