ধরুন আমাদের একটি সংখ্যা N আছে, আমাদের "0" s এবং "1" s সমন্বিত একটি স্ট্রিং খুঁজে বের করতে হবে যা ভিত্তি -2 (ঋণাত্মক দুটি) তে এর মান উপস্থাপন করে। প্রত্যাবর্তিত স্ট্রিংটিতে কোন অগ্রণী শূন্য থাকা উচিত নয়, যদি না স্ট্রিংটি ঠিক "0" হয়। সুতরাং ইনপুট যদি 2 এর মত হয়, তাহলে আউটপুট হবে "110", যেমন (-2)^2 + (-2)^1 + (-2)^0 =2।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=একটি খালি স্ট্রিং
-
যদি N =0 হয়, তাহলে “0”
রিটার্ন করুন -
যখন N নন 0
-
rem :=N mod (– 2)
-
N :=N / (-2)
-
যদি rem <0 এবং rem :=rem + 2 এবং N বাড়ায় 1
-
ret :=ret + rem স্ট্রিং হিসাবে
-
-
স্ট্রিং রিভার্স করুন
-
রিটার্ন রিটার্ন।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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