#include <iostream>
using namespace std;
void m_fx(int a, int b, int& answer)
{
answer++;
if (a % 2 == 1 && b - a == 1) return;
m_fx((a+1)/2, (b+1)/2, answer);
}
int solution(int n, int a, int b)
{
int answer = 0;
if (a > b) { m_fx(b, a, answer); }
else{ m_fx(a, b, answer); }
return answer;
}
다른사람의 답
int solution(int n, int a, int b)
{
int answer = 0;
while (a != b) {
a = (a + 1) >> 1; // 2 1 1
b = (b + 1) >> 1; // 4 2 1
++answer;
}
return answer;
}
int gcd(int a, int b) { return (a % b == 0 ? b : gcd(b, a % b)); }
long long solution(int w, int h) {
long long answer = 1;
if (w == 1 || h == 1)
{
return 0;
}
int a = gcd(w, h);
answer = ((long long)w * (long long)h) - (w / a + h / a - 1) * a;
return answer;
}