반응형
https://www.acmicpc.net/problem/5101
예외를 조심해서 구현해야 하는 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
while loop를 수행하며 a, b, c, ans를 선언 후 적절히 입력해줍니다.
📔 풀이과정
등차수열은 다음과 같은 공식이 성립합니다.a(초항) + (n - 1) * b = c이를 풀어 정리하면n*b = c - a + b가 됩니다.이 항이 성립하려면 n은 정수여야 하므로 n = (c - a + b) / b가 정수여야 합니다. 또한, 무조건 나누어 떨어진다고 답이 아니며 3 2 1, 5 2 1같은 무한히 증가해도 답이 될 수 없는 경우도 고려해야합니다.ans에 c - a + b값을 저장합니다.
📔 정답출력
조건에 따라 적절히 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int main(){
while(1){
int a, b, c, ans;
cin >> a >> b >> c;
if(!a && !b && !c) break;
ans = c - a + b;
if(ans % b || (b && a > c)) cout << "X\n";
else cout << ans / b << '\n';
}
}
📕 Test Case
input
3 2 1
답
X
input
5 2 1
답
X
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 5220 : Error Detection (0) | 2021.12.14 |
---|---|
(C++) - 백준(BOJ) 5102 : Sarah's Toys (0) | 2021.12.13 |
(C++) - 백준(BOJ) 5074 : When Do We Finish? (0) | 2021.12.11 |
(C++) - 백준(BOJ) 20867 : Rulltrappa (0) | 2021.12.10 |
(C++) - 백준(BOJ) 4922 : Walk Like an Egyptian (0) | 2021.12.09 |