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;
}
}