Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: KanemiyaKana

Problemset: แปลงเลขฐาน

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-25 22:00:48

#include <iostream>
#include <string>
using namespace std;

int powerof16(int power)
{
    int returnvalue = 1;
    for (int i = 0; i < power; i++)
    {
        returnvalue = returnvalue * 16;
    }
    return returnvalue;
}
string base2(string base16)
{
    string returnstring = "";
    for (int i = 0; i < base16.length(); i++)
    {
        if (i == 0)
        {
            if (base16[i] == '0')
            {
                returnstring = returnstring;
            }
            else if (base16[i] == '1')
            {
                returnstring += "1";
            }
            else if (base16[i] == '2')
            {
                returnstring += "10";
            }
            else if (base16[i] == '3')
            {
                returnstring += "11";
            }
            else if (base16[i] == '4')
            {
                returnstring += "100";
            }
            else if (base16[i] == '5')
            {
                returnstring += "101";
            }
            else if (base16[i] == '6')
            {
                returnstring += "110";
            }
            else if (base16[i] == '7')
            {
                returnstring += "111";
            }
            else if (base16[i] == '8')
            {
                returnstring += "1000";
            }
            else if (base16[i] == '9')
            {
                returnstring += "1001";
            }
            else if (base16[i] == 'A')
            {
                returnstring += "1010";
            }
            else if (base16[i] == 'B')
            {
                returnstring += "1011";
            }
            else if (base16[i] == 'C')
            {
                returnstring += "1100";
            }
            else if (base16[i] == 'D')
            {
                returnstring += "1101";
            }
            else if (base16[i] == 'E')
            {
                returnstring += "1110";
            }
            else if (base16[i] == 'F')
            {
                returnstring += "1111";
            }
        }
        else
        {
            if (base16[i] == '0')
            {
                returnstring += "0000";
            }
            else if (base16[i] == '1')
            {
                returnstring += "0001";
            }
            else if (base16[i] == '2')
            {
                returnstring += "0010";
            }
            else if (base16[i] == '3')
            {
                returnstring += "0011";
            }
            else if (base16[i] == '4')
            {
                returnstring += "0100";
            }
            else if (base16[i] == '5')
            {
                returnstring += "0101";
            }
            else if (base16[i] == '6')
            {
                returnstring += "0110";
            }
            else if (base16[i] == '7')
            {
                returnstring += "0111";
            }
            else if (base16[i] == '8')
            {
                returnstring += "1000";
            }
            else if (base16[i] == '9')
            {
                returnstring += "1001";
            }
            else if (base16[i] == 'A')
            {
                returnstring += "1010";
            }
            else if (base16[i] == 'B')
            {
                returnstring += "1011";
            }
            else if (base16[i] == 'C')
            {
                returnstring += "1100";
            }
            else if (base16[i] == 'D')
            {
                returnstring += "1101";
            }
            else if (base16[i] == 'E')
            {
                returnstring += "1110";
            }
            else if (base16[i] == 'F')
            {
                returnstring += "1111";
            }
        }
    }
    return returnstring;
}

string base8(string base2)
{
    string returnstring = "";
    string returnstringreverse = "";
    string base2reverse = "";
    string temp = "";
    for (int i = base2.length() - 1; i >= 0; i--)
    {
        base2reverse += base2[i];
    }
    int times = base2.length() / 3;
    for (int i = 2; i < base2.length(); i = i + 3)
    {
        string tempstring = "";
        tempstring += base2reverse[i];
        tempstring += base2reverse[i - 1];
        tempstring += base2reverse[i - 2];

        if (tempstring == "000")
        {
            returnstring += "0";
        }
        else if (tempstring == "001")
        {
            returnstring += "1";
        }
        else if (tempstring == "010")
        {
            returnstring += "2";
        }
        else if (tempstring == "011")
        {
            returnstring += "3";
        }
        else if (tempstring == "100")
        {
            returnstring += "4";
        }
        else if (tempstring == "101")
        {
            returnstring += "5";
        }
        else if (tempstring == "110")
        {
            returnstring += "6";
        }
        else if (tempstring == "111")
        {
            returnstring += "7";
        }
    }
    int leftovers = base2.length() % 3;
    if (leftovers != 0)
    {
        if (leftovers == 1)
        {
            returnstring += base2reverse[base2reverse.length() - 1];
        }
        else if (leftovers == 2)
        {
            temp += base2reverse[base2.length() - 1];
            temp += base2reverse[base2.length() - 2];

            if (temp == "00")
            {
                returnstring += "0";
            }
            else if (temp == "01")
            {
                returnstring += "1";
            }
            else if (temp == "10")
            {
                returnstring += "2";
            }
            else if (temp == "11")
            {
                returnstring += "3";
            }
        }
    }
    for (int i = returnstring.length() - 1; i >= 0; i--)
    {
        returnstringreverse += returnstring[i];
    }
    return returnstringreverse;
}

int valueassigning(string letter)
{
    int returntotal = 0;
    string reverseletter = "";

    for (int i = letter.length() - 1; i >= 0; i--)
    {
        reverseletter += letter[i];
    }

    for (int i = 0; i < reverseletter.length(); i++)
    {
        if (reverseletter[i] == '0')
        {
            returntotal = returntotal + 0 * powerof16(i);
        }
        else if (reverseletter[i] == '1')
        {
            returntotal = returntotal + 1 * powerof16(i);
        }
        else if (reverseletter[i] == '2')
        {
            returntotal = returntotal + 2 * powerof16(i);
        }
        else if (reverseletter[i] == '3')
        {
            returntotal = returntotal + 3 * powerof16(i);
        }
        else if (reverseletter[i] == '4')
        {
            returntotal = returntotal + 4 * powerof16(i);
        }
        else if (reverseletter[i] == '5')
        {
            returntotal = returntotal + 5 * powerof16(i);
        }
        else if (reverseletter[i] == '6')
        {
            returntotal = returntotal + 6 * powerof16(i);
        }
        else if (reverseletter[i] == '7')
        {
            returntotal = returntotal + 7 * powerof16(i);
        }
        else if (reverseletter[i] == '8')
        {
            returntotal = returntotal + 8 * powerof16(i);
        }
        else if (reverseletter[i] == '9')
        {
            returntotal = returntotal + 9 * powerof16(i);
        }
        else if (reverseletter[i] == 'A')
        {
            returntotal = returntotal + 10 * powerof16(i);
        }
        else if (reverseletter[i] == 'B')
        {
            returntotal = returntotal + 11 * powerof16(i);
        }
        else if (reverseletter[i] == 'C')
        {
            returntotal = returntotal + 12 * powerof16(i);
        }
        else if (reverseletter[i] == 'D')
        {
            returntotal = returntotal + 13 * powerof16(i);
        }
        else if (reverseletter[i] == 'E')
        {
            returntotal = returntotal + 14 * powerof16(i);
        }
        else if (reverseletter[i] == 'F')
        {
            returntotal = returntotal + 15 * powerof16(i);
        }
    }

    return returntotal;
}

int main()
{
    string input;
    cin >> input;
    int total = valueassigning(input);

    if (total > 65535)
    {
        return 0;
    }
    else
    {
        string output1 = base2(input);
        cout << output1 << "\n";
        string output2 = base8(output1);
        cout << output2;
    }
}