1212


質問する


8進法を入力する場合は、バイナリに変換するプログラムを作成します.

入力


最初の行は8進数を与えます.与えられた数字の長さは333334を超えない.

しゅつりょく


1行目に与えられた数字を2進数出力に変換します.数がゼロでない限り、1で始まる必要があります.


入力
  • :314
  • 出力:11001100
  • に答える


    バイナリを8進数に変換する問題を逆にすればいい.
    8進数ごとに2進数に変換して出力すればいいです.

    コード#コード#

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    void	ft_print_binary(int n, int cnt)
    {
    	vector <int> binary;
    
    	vector <int> ::reverse_iterator riter;
    	while (1)
    	{
    		binary.push_back(n % 2);
    		n /= 2;
    		if (n == 0) break;
    	}
    	if (cnt != 0) # 첫재 자리수가 아닌경우 빈자리에 0 추가
    	{
    		while (binary.size() != 3)
    			binary.push_back(0);
    	}
    	for (riter = binary.rbegin(); riter != binary.rend(); riter++)
    		cout << *riter;
    }
    int		main()
    {
    	string			str;
    	vector <int>	v;
    	int				cnt = 0;
    
    	cin >> str;
    	for (int i = 0; i < str.length(); i++)
    		v.push_back(str[i] - '0');
    	for (auto x : v)
    	{
    		ft_print_binary(x, cnt);
    		cnt++;
    	}
    		
    	return (0);
    }