白駿2089:-バイナリ数
1351 ワード
★★★☆☆
基本食品をエクスポートするのに長い時間がかかりました.
コードを書くのはバイナリコードに基づいているので、長くはかかりません.
『私の答え』
-バイナリ数の問題は、バイナリ数が同じように行われた場合、残りの数は-1となる.
したがって,残りが−1であればシェアに1を加えて残りを1とする.
10進数値が1になり、最後の1が配列に直接挿入されます.(10進数値が1の場合、while構文自体は返されません.)
基本食品をエクスポートするのに長い時間がかかりました.
コードを書くのはバイナリコードに基づいているので、長くはかかりません.
『私の答え』
#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構文自体は返されません.)
Reference
この問題について(白駿2089:-バイナリ数), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongopo/백준-2089-2진수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol