1. a, b, c 가 0 인 경우는 비트 연산자로 확인
2. 출력은 AP 또는 GP 가 항상 맞기 때문에, 공차만 확인한다.
3. 등차수열이 아닌경우는 등비수열로 확정
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
import java.io.*; | |
/** | |
* https://www.acmicpc.net/problem/4880 | |
* BOJ 백준온라인져지 4880 다음수 풀이 | |
*/ | |
public class Main { | |
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); | |
public static void main (String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
while (true) { | |
String str1[] = br.readLine().split(" "); | |
int a = Integer.parseInt(str1[0]); | |
int b = Integer.parseInt(str1[1]); | |
int c = Integer.parseInt(str1[2]); | |
if ((a | b | c) == 0) break; | |
if (b - a == c - b) bw.write("AP " + (c + (c - b))); | |
else bw.write("GP " + (c * (c / b))); | |
bw.write("\n"); | |
} | |
bw.flush(); | |
} | |
} |
문제
등차수열(AP)은 인접한 두 수의 차이(공차)가 일정한 수열이다. 예를 들어, 3, 5, 7, 9, 11, 13, ...은 차이가 2로 일정한 등차수열이다. 이 문제에서 등차수열의 공차는 항상 0이 아닌 정수이다.
등비수열(GP)는 각 항이 그 앞과 일정한 비(공비)를 가지는 수열이다. 예를 들어, 2, 6, 18, 54, ...은 공비가 3인 등비수열이다. 이 문제에서 등비수열의 공비는 항상 0이 아닌 정수이다.
어떤 수열의 연속한 세개의 숫자가 주어졌을 때, 이 수열이 등차수열인지 등비수열인지를 알아낸 뒤, 다음 항을 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 수열의 연속하는 세 수 a1, a2, a3이 한 줄에 주어진다. (-10,000 < a1, a2, a3 < 10,000) a1, a2, a3은 서로 같지 않다.
입력의 마지막 줄에는 0이 세 개 주어진다.
출력
각 테스트 케이스에 대해서, 등차수열이면 AP를, 등비수열이면 GP를 출력한 뒤, 다음 항을 출력한다. 모든 입력은 항상 등차수열이나 등비수열이다.
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 12756 고급 레스토랑 풀이 (0) | 2018.04.09 |
---|---|
BOJ 백준온라인져지 12755 수면 장애 풀이 (0) | 2018.04.09 |
BOJ 백준온라인져지 5354 j박스 풀이 (0) | 2018.04.09 |
BOJ 백준온라인져지 3460 이진수 풀이 (0) | 2018.04.06 |
BOJ 백준온라인져지 2845 파티가 끝나고 난 뒤 풀이 (0) | 2018.04.06 |