<문제>
<Code>
//22114] 창영이와 점프
//입력으로 주어지는 수와 출력해야 하는 정답이 매우 크기 때문에
//64비트 자료형(long long, %lld로 출력) 사용.
#include <iostream>
#include <vector>
using namespace std;
//double type으로 리턴해주는 pow함수 대체
unsigned long long my_pow(unsigned long long base, int exp){
unsigned long long res = 1;
while(exp){
if (exp & 1){
res *= base;
}
exp >>= 1;
base *= base;
}
return res;
}
int main() {
freopen("input.txt","rt", stdin);
int t; //"선린의 터"의 개수
scanf("%d", &t); //3
long long input[1001]; //찾아야 하는 선린의 터에 대한 정보
int binary[1001];
for(int i=0; i<t; i++){
scanf("%lld", &input[i]);
}
for(int i=0; i<t; i++){
int cnt=0; //2진법이 몇자리 수인지 count
long long answer=0;
long long num=input[i];
//binary vector에 2진법 저장
while(num!=0){
binary[cnt]=num%2;
cnt++;
num/=2;
}
//3진법으로 변환
for(int j=0; j<cnt; j++){
answer+= my_pow(3, j)*binary[j];
}
//출력
printf("%lld\n", answer);
}
return 0;
}
<Comment>
- 선린의 터 순서: 3^0, 3^1, 3^0+3^1, 3^2…
- N을 2진법으로 나타내서 배열에 저장하고
- 3진법으로 바꿔 출력.
*math.h 라이브러리의 pow함수는 double형으로 리턴하므로 임의의 my_pow라는 long long형으로 리턴해주는 함수를 찾았음.(내가 안씀)
https://www.acmicpc.net/problem/21968
21968번: 선린의 터를
입력으로 주어지는 수와 출력해야 하는 정답이 매우 크기 때문에 64비트 자료형(C/C++은 long long, Java는 long, %lld로 출력)을 사용해야 한다.
www.acmicpc.net
'Problem Solving > 백준' 카테고리의 다른 글
[백준-21735] 눈덩이 굴리기 (0) | 2021.07.30 |
---|---|
[백준-21736] 헌내기는 친구가 필요해 (0) | 2021.07.30 |
[백준-22114] 창영이와 점프 (0) | 2021.07.25 |
[백준-21964] 선린인터넷고등학교 교가 (0) | 2021.07.21 |
[백준-22113] 창영이와 버스 (0) | 2021.07.21 |