Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- tolerated
- JanusWebRTC
- 달인막창
- mp4fpsmod
- vfr video
- addhooks
- 겨울 부산
- Spring Batch
- JanusWebRTCServer
- 코루틴 빌더
- 자원부족
- kotlin
- 개성국밥
- PersistenceContext
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 깡돼후
- JanusWebRTCGateway
- table not found
- 오블완
- VARCHAR (1)
- 티스토리챌린지
- PytestPluginManager
- terminal
- 코루틴 컨텍스트
- preemption #
- pytest
- python
- JanusGateway
- taint
- Value too long for column
Archives
너와 나의 스토리
[BOJ] 1740 거듭제곱 본문
반응형
문제: https://www.acmicpc.net/problem/1740
문제 풀이:
3의 제곱 -> 1 3 9 27 ....
3의 제곱으로 만들 수 있는 값들: 1 3 4 9 10 12 13....
1 -> 1
3 -> 3
4 -> 1+3
9 -> 9
10 -> 1+9
12 -> 3+9
13 -> 1+3+9
.
.
.
1은 3의 제곱 중 가장 작은 값이므로 [1]이라고 하자.
3은 [2]
9는 [3]
이라고 했을 때,
1 = [1]
3 = [2]
4 = [1]+[2]
9 = [3]
10 = [1]+[3]
12 = [2]+[3]
13 = [1]+[2]+[3]
이런식으로 바꿔서 생각할 수 있다.
이를 이진수로 나타내보자.
1 = [1] = 1
3 = [2] = 10
4 = [1]+[2] = 11
9 = [3] = 100
10 = [1]+[3] = 101
12 = [2]+[3] = 110
13 = [1]+[2]+[3] = 111
다음과 같이 이진수로 나타낼 수 있다.
즉, N을 이진수로 바꾼 후, 이를 3진수로 읽어내면 된다.
소스 코드:
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
using namespace std;
long long n,res;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
long long three = 1, tmp = n;
while (tmp > 0) {
if (tmp % 2 == 1) res += three;
tmp /= 2;
three *= 3;
}
cout << res << '\n';
return 0;
}
반응형
'Algorithm > 기타' 카테고리의 다른 글
"2018 KAKAO BLIND RECRUITMENT" > [1차] 뉴스 클러스터링 (0) | 2020.10.09 |
---|---|
[SW Expert Academy] 9708. 가장 긴 수열 D4 (0) | 2020.06.04 |
[BOJ] 5525번 IOIOI (0) | 2020.04.07 |
[BOJ] 1541 잃어버린 괄호 (0) | 2020.03.26 |
1260. [S/W 문제해결 응용] 7일차 - 화학물질2 (0) | 2019.11.22 |
Comments