Submission
Status:
PPPPPPPPPP
Score: 100
User: Nathlol2
Problemset: แปลงเลขฐาน
Language: cpp
Time: 0.003 second
Submitted On: 2024-10-17 17:27:31
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string reverse(string n){
int l = n.length();
int p = l - 1;
for(int i = 0;i<l / 2;i++){
char temp = n[i];
n[i] = n[p];
n[p] = temp;
p--;
}
return n;
}
int tobase10(string n){
int l = n.length();
int p = l - 1;
int sum = 0;
for(int i = 0;i<l;i++){
if(n[i] >= 'A' && n[i] <= 'F'){
sum = sum + (n[i] - 55) * pow(16, p);
}else{
sum = sum + (n[i] - '0') * pow(16, p);
}
p--;
}
return sum;
}
string tobase8(int n){
string b8 = "";
while(n > 0){
b8.push_back(n % 8 + '0');
n = n / 8;
}
return reverse(b8);
}
string tobase2(int n){
string b2 = "";
while(n > 0){
b2.push_back(n % 2 + '0');
n = n / 2;
}
return reverse(b2);
}
int main(){
string n;
cin >> n;
int b = tobase10(n);
cout << tobase2(b) << endl << tobase8(b);
}