白駿2089:-バイナリ数


★★★☆☆
基本食品をエクスポートするのに長い時間がかかりました.
コードを書くのはバイナリコードに基づいているので、長くはかかりません.
『私の答え』
#include <iostream>
#include <stack>
using namespace std;

int main() {
	long long n;
	stack<int> arr;

	cin >> n;

	if (n == 0) {
		cout << 0 << "\n";
		return 0;
	}
	while (n != 1) {
		if (n % (-2) ==-1) { //나머지가 음수
			n = (n / (-2)) + 1;
			//cout << "n :: " << n << "\n";
			arr.push(1);
		}
		else {
			arr.push(n%(-2));
			n = (n / (-2));
			//cout << "n :: " << n << "\n";
		}
	}
	arr.push(1);

	while (!arr.empty()) {
		cout << arr.top();
		arr.pop();
	}
	cout << "\n";
	
	return 0;
}
2進数の場合、10進数を2で割った後、残りの値を逆順序で出力します.
-バイナリ数の問題は、バイナリ数が同じように行われた場合、残りの数は-1となる.
したがって,残りが−1であればシェアに1を加えて残りを1とする.
10進数値が1になり、最後の1が配列に直接挿入されます.(10進数値が1の場合、while構文自体は返されません.)