문제
첫 항 a, 공차 b인 등차수열에서 c가 몇 번째 항인지 구하라. 수열에 없으면 X를 출력한다.
입력
여러 줄에 a, b, c가 주어지며, 모두 0이면 종료한다.
출력
c가 수열의 몇 번째 항인지 출력하거나 X를 출력한다.
예제
| 입력 | 출력 |
|---|---|
1 2 3 0 0 0 | 2 |
풀이
등차수열의 일반항 공식으로 항 번호를 계산한다.
(c - a)가 b로 나누어떨어지고, 몫이 0 이상이면 수열에 존재한다- 항 번호는
(c - a) / b + 1이다 - 나누어떨어지지 않거나 음수이면 X를 출력한다
핵심 아이디어: 등차수열 a, a+b, a+2b, ...에서 c의 위치는 (c-a)/b로 바로 구할 수 있다.
코드
while True:
a, b, c = map(int, input().split())
if a == b == c == 0:
break
if (c - a) % b == 0 and (c - a) // b >= 0:
print((c - a) // b + 1)
else:
print("X")복잡도
- 시간: O(1) (케이스당)
- 공간: O(1)