https://www.acmicpc.net/problem/1731
문제
등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 더해야 하는 수이다. 예를 들어 P=1, Q=2 이면 그 등차수열은 1, 3, 5, 7, ..... 이 된다.
등비가 정수인 등비수열 (어떤 수에서 시작해 차례로 같은 수를 곱하여 만든 수열) 은 등차수열과 비슷하게 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 곱해야 하는 수이다. 예를 들어 P=3, Q=2이면 그 등비수열은 3, 6, 12, ...이 된다.
테디는 세상에서 수학을 제일 좋아해서 매일같이 이 수열이 등차수열인지 등비수열인지 정한다음에 다음 수를 구한다.
어떤 수열이 주어졌을 때, 그 수열의 규칙이 등차수열인지, 등비수열인지 결정한 후에, 다음에 등장할 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수열의 길이 N이 주어진다. 둘째 줄부터 N개의 줄에 수열의 각 원소가 차례대로 주어진다. 주어지는 수열은 등차수열이나 등비수열 중에 하나다. N은 항상 3 이상 50이하이며, 입력되는 수는 10^6 이하의 자연수이다.
출력
첫째 줄에 수열의 다음 원소를 출력한다. 이 수는 20억보다 작거나 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> #include <stdlib.h> void infer() { int N; scanf("%d", &N); int i; int *arr; arr = (int*)malloc(sizeof(int)*N); for (i = 0;i < N;i++) { scanf("%d", &arr[i]); } if ((arr[0] * arr[2]) == (arr[1] * arr[1])) printf("%d", arr[N - 1] * (arr[1] / arr[0])); else printf("%d", arr[N - 1] + (arr[1] - arr[0])); } int main() { infer(); } | cs |
등비 수열과 등차수열의 기본 개념만 알면 풀수있는 문제 !.
'백준 알고리즘' 카테고리의 다른 글
[C언어] 백준알고리즘 2577번 숫자의 개수 문제 (0) | 2019.02.28 |
---|---|
[C언어] 백준알고리즘 2609번 최대공약수와 최소공배수 (0) | 2019.02.26 |
[C언어] 백준 알고리즘 10102번 개표 문제 (0) | 2019.02.17 |
[C언어] 백준알고리즘 16170 오늘의 날짜는? 문제 (0) | 2019.02.17 |
[C언어] 백준 알고리즘 1773번 폭죽쇼 문제 (0) | 2019.02.13 |