1373
2667 ワード
質問する
バイナリ数を指定した場合は、バイナリ数に変換するプログラムを作成します.
入力
最初の行はバイナリ数を与えます.与えられた数の長さは10万を超えない.
しゅつりょく
1行目に与えられた数字を8進出力に変換します.
例
入力
最初の行はバイナリ数を与えます.与えられた数の長さは10万を超えない.
しゅつりょく
1行目に与えられた数字を8進出力に変換します.
例
入力
入力
に答える
reverse_iterator
vector <int> ::reverse_iterator riter, res_iter;
for (riter = v.rbegin(); riter != v.rend(); riter++)
{
...
}
順方向ではなくベクトル変数を使用します.コード#コード#
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string str;
vector <int> v;
vector <int> res;
int tmp = 0;
int count = 0;
cin >> str;
v.push_back(0);
v.push_back(0);
for (int i = 0; i < str.length(); i++)
v.push_back(str[i] - '0');
vector <int> ::reverse_iterator riter, res_iter;
for (riter = v.rbegin(); riter != v.rend(); riter++)
{
for (int j = 0; j < count; j++)
*riter *= 2;
tmp += *riter;
count++;
if (count % 3 == 0 )
{
res.push_back(tmp);
count = 0;
tmp = 0;
}
}
for (res_iter = res.rbegin(); res_iter != res.rend(); res_iter++)
cout << *res_iter;
return (0);
}
注意事項
v.push_back(0);
v.push_back(0);
psuh back(0)を2回実行する理由は1101のように3つに分けたときに分けられなかった場合のためです.
count%3=0の場合は結果をpush backし、上記のように分けることができなければ最初のビット数は削除されます.
Reference
この問題について(1373), 我々は、より多くの情報をここで見つけました https://velog.io/@lsmmay322/백준-1373テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol