728x90
출처
https://www.acmicpc.net/problem/1057
내 풀이
#include<iostream>
using namespace std;
int roundNum = 0;
int result_Round = 0;
int Kim = 0, Lim = 0;
int main()
{
cin >> roundNum >> Kim >> Lim;
while (roundNum)
{
result_Round++;
//조건이 맞아떨어지면 만남
if ((Kim % 2 == 0 && Kim == Lim + 1) || (Lim % 2 == 0 && Lim == Kim + 1))break;
//만약 소수점으로 나눠떨어지면 1씩 더해주기
if (Kim % 2 != 0) Kim++;
if (Lim % 2 != 0) Lim++;
Kim /= 2;
Lim /= 2;
roundNum /= 2;
}
if (roundNum == 0) cout << -1; //토너먼트에서 만나지 못함
else cout << result_Round;
}
해설
roundNum을 넣어 조건이 해당할 때까지 각 수를 2씩 나눠주면서 반복해주었다.
느낀점
Very Good
'백준 코딩테스트 > 실버' 카테고리의 다른 글
5635) 생일 (C++) (0) | 2022.06.11 |
---|---|
1748) 수 이어 쓰기 1 (C++) (0) | 2022.06.06 |
11931) 수 정렬하기 4 (C++) (0) | 2022.06.03 |
1158) 요세푸스 문제 (C++) (0) | 2022.06.03 |
2960) 에라토스테네스의 체 (C++) (0) | 2022.06.01 |