https://www.acmicpc.net/problem/11812
오랜만에 보는 매우 쉬운 문제. 자식 노드를 N이라고 할 때, 부모 노드는 (N-1)/K라는 것을 이용하면 금방 풀린다.
단, 출력이 많으므로 ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);을 하는 것을 잊지말자!(개고생함)
#include <iostream>
using namespace std;
long long N,K,Q;
int main(){
cin.tie(0); cout.tie(0); ios::sync_with_stdio(0);
cin>>N>>K>>Q;
long long A,B;
while(Q--){
long long cnt=0;
cin>>A>>B;
if(K==1){
cout<<abs(A-B)<<'\n';
continue;
}
A--;B--;
while(A!=B){
if(A>B){
A=(A-1)/K;
}else if(A<B){
B=(B-1)/K;
}
cnt++;
}
cout<<cnt<<'\n';
}
return 0;
}
'백준 > Tree' 카테고리의 다른 글
[BOJ] 5639 이진 검색 트리 (0) | 2022.02.18 |
---|---|
[BOJ] 4256 트리 C++ (0) | 2021.08.11 |
[BOJ] 19581 두 번째 트리의 지름 C++ (0) | 2021.08.09 |
[BOJ] 1167 트리의 지름 C++ (0) | 2021.08.09 |
[BOJ] 1655 가운데를 말해요 C++ (0) | 2021.08.05 |