본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 5101 : Sequences

반응형

https://www.acmicpc.net/problem/5101

 

5101번: Sequences

11 is the 5th term The sequence is –1, -4, -7, -10 (-1+ -3 = -4, -4 + –3 = -7, -7+ -3 = -10) -8 isn’t in the sequence.

www.acmicpc.net

예외를 조심해서 구현해야 하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

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