https://www.acmicpc.net/problem/12787
12787번: 지금 밥이 문제냐
평소에 전공 공부를 열심히 하는 황제는 시험기간에 형들이 IPv4, IPv6주소를 저장하는데 각각 최소 4바이트, 6바이트가 필요하다는 얘기를 듣고 아람이에게 질문했다. 황제: "IPv8주소를 저장하는
www.acmicpc.net
#include <bits/stdc++.h>
int t, m;
std::string n;
void ipv8ToNum(std::string & s){
std::stringstream ss;
ss.str(s);
std::string str;
unsigned long long number = 0;
while(std::getline(ss, str, '.')){
number <<= 8;
unsigned char part = (unsigned char)std::stoi(str);
number |= part;
}
std::cout << number << "\n";
}
void numToIpv8(std::string & s){
std::string str;
unsigned long long number = std::stoull(s);
unsigned long long flag = 0xFF00000000000000;
for (int i = 7; i >= 0; --i){
unsigned char ch = ((number & flag) >> 8 * i);
flag = flag >> 8;
str += std::to_string(ch);
str += '.';
}
str.pop_back();
std::cout << str << "\n";
}
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> t;
while(t--){
std::cin >> m >> n;
if (m == 1){
ipv8ToNum(n);
}
else {
numToIpv8(n);
}
}
return 0;
}
'백준 문제풀이 > Parsing' 카테고리의 다른 글
[C++] 백준 문제풀이 (Parsing) 3568번 iSharp (0) | 2023.05.27 |
---|---|
[C++] 백준 문제풀이 (Parsing) 3613번 Java vs C++ (0) | 2023.05.27 |