본문 바로가기
Develop/백준 (Cpp)

[백준] 5073번 : 삼각형과 세 변 (C++)

by Tarra 2023. 2. 12.

10984번: 내 학점을 구해줘


문제 )

등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 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이하이며, 입력되는 수는 106 이하의 자연수이다.

 

 

 

출력 :

첫째 줄에 수열의 다음 원소를 출력한다. 이 수는 20억보다 작거나 같은 자연수이다.

 

 

 

 

 

풀이)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int n;
    vector<int> vec;
    cin >> n;
 
    int number;
    for (int i = 0; i < n; i++) {
        cin >> number;
        vec.push_back(number);
    }
    
    // flag가 0이면 등차수열, 1이면 등비수열
    bool flag = 0;
 
    if (vec[1+ (vec[1- vec[0]) == vec[2]) {
        flag = 0;
    }
    else if (vec[1* (vec[1/ vec[0]) == vec[2]) {
        flag = 1;
    }
 
    if (flag) {
        long long answer = vec.back() * (vec[1/ vec[0]);
        cout << answer;
    }
    else {
        long long answer = vec.back() + (vec[1- vec[0]);
        cout << answer;
    }
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/1731 

 

1731번: 추론

등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 더해

www.acmicpc.net