728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/1057
1. 풀이 |
코드에서는 3가지를 확인하며 지속적으로 2로 나누어주었다.
1. 김지민이 소수일 때,
kim + 1 == LIM인 경우, 이번에 경기를 하게 된다.
즉, 이번까지의 count를 출력한다.
2. 김지민이 짝수일 때,
kim - 1 == LIM인 경우, 이번에 경기를 하게 된다.
즉, 이번까지의 count를 출력한다.
3. 김지민과 임한수가 같은 경우
바로 반복을 종료하고 count를 출력한다.
이러한 조건이 있는데, 이 3가지 중에서 골라서 코드를 작성하면 된다.
2. 소스코드 |
1) 1,2,3의 조건을 모두 사용한 경우.
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 31 | #include<iostream> int N, KIM, LIM; void calc() { int count(0); while (KIM != LIM) { count++; if (KIM % 2) { if (KIM + 1 == LIM) break; KIM = KIM / 2 + 1; } else { if (KIM - 1 == LIM) break; KIM /= 2; } if (LIM % 2) LIM = LIM / 2 + 1; else LIM /= 2; } std::cout << count; } int main() { std::cin >> N >> KIM >> LIM; calc(); } | cs |
2. 3의 조건만 사용한 경우
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 | #include<iostream> int N, KIM, LIM; void calc() { int count(0); while (KIM != LIM) { count++; if (KIM % 2) { KIM = KIM / 2 + 1; } else { KIM /= 2; } if (LIM % 2) LIM = LIM / 2 + 1; else LIM /= 2; } std::cout << count; } int main() { std::cin >> N >> KIM >> LIM; calc(); } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| easy' 카테고리의 다른 글
[c++] 백준 1547 - 공(swap) (0) | 2019.04.24 |
---|---|
[c++] 백준 10219 - Meats On The Grill(reverse, 나중에 다시) (0) | 2019.04.24 |
[c++] 백준 1094 - 막대기 (0) | 2019.04.17 |
[c++] 백준 2455 - 지능형 기차 (0) | 2019.04.17 |
[c++] 백준 3036 - 링 (0) | 2019.04.17 |