ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3-1: 다음수
    Math 2018. 10. 24. 19:49

    다음수 (nextnum.cpp)

     

    문제


    위키피디아에 따르면 등차수열(arithmetic sequence)은 연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다. 예를 들어, 3, 5, 7, 9, 11, 13, ...은 차이가 2로 일정한 등차수열이다. 이때 두 항의 차이는 이 수열의 모든 연속하는 두 항들에 대해서 공통적으로 나타나는 차이므로, 공차라고 한다. 이 문제에서는 등차수열의 공차를 항상 0이 아닌 정수라고 제한을 둘 것이다.

    등비수열(geometric sequence)은 각 항이 그 앞 항과. 일정한 비를 가지는 수열을 말한다. 그리고, 이 일정한 비를 공비라고 한다. 예를 들어, 2, 6, 18, 54, ...은 공비가 3인 등비수열이다. 이 문제에서는 등비수열의 공비를 항상 0이 아닌 정수라고 제한을 둘 것이다.

    어떤 수열의 연속한 세개의 숫자가 주어졌을 때, 이 수열이 등차수열인지 등비수열인지를 구분한 후, 다음 항을 구하라  

    입력


    입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 수열의 연속하는 세 수 a1, a2, a3이 한 줄에 주어진다. (-10,000 < a1, a2, a3 < 10,000) a1, a2, a3은 서로 다른 수이다.

    입력의 마지막 줄에는 0이 세 개 주어진다.

     

    출력


    각 테스트 케이스마다 아래와 같은 형태로 출력을 해야한다.

    XX V

    XX부분은 AP 또는 GP로 주어진 수들이 등차수열을 이룰 경우 AP를, 등비수열을 이룰 경우 GP를 출력한다. V는 주어진 수들 다음에 나올 수이다. 모든 입력은 항상 등차수열이나 등비수열이다.

     

    예제 입력

    4 7 10
    2 6 18
    0 0 0

    예제 출력

    AP 13
    GP 54


    import java.util.Scanner;

    public class NextNum {
    /**
    * 위키피디아에 따르면 등차수열(arithmetic sequence)은 연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다.
    * 예를 들어, 3, 5, 7, 9, 11, 13, ...은 차이가 2로 일정한 등차수열이다.
    * 이때 두 항의 차이는 이 수열의 모든 연속하는 두 항들에 대해서 공통적으로 나타나는 차이므로, 공차라고 한다.
    * 이 문제에서는 등차수열의 공차를 항상 0이 아닌 정수라고 제한을 둘 것이다.
    *
    * 등비수열(geometric sequence)은 각 항이 그 앞 항과. 일정한 비를 가지는 수열을 말한다.
    * 그리고, 이 일정한 비를 공비라고 한다. 예를 들어, 2, 6, 18, 54, ...은 공비가 3인 등비수열이다.
    * 이 문제에서는 등비수열의 공비를 항상 0이 아닌 정수라고 제한을 둘 것이다.
    *
    * 어떤 수열의 연속한 세개의 숫자가 주어졌을 때, 이 수열이 등차수열인지 등비수열인지를 구분한 후, 다음 항을 구하라
    *
    * 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 수열의 연속하는 세 수 a1, a2, a3이 한 줄에 주어진다. (-10,000 < a1, a2, a3 < 10,000) a1, a2, a3은 서로 다른 수이다.
    *
    * 입력의 마지막 줄에는 0이 세 개 주어진다.
    *
    * XX V
    * XX부분은 AP 또는 GP로 주어진 수들이 등차수열을 이룰 경우 AP를, 등비수열을 이룰 경우 GP를 출력한다.
    * V는 주어진 수들 다음에 나올 수이다. 모든 입력은 항상 등차수열이나 등비수열이다.
    *
    *
    * @param args
    */
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int a=-1,b=-1,c =-1;

    while ( true){
    a = sc.nextInt();
    b = sc.nextInt();
    c = sc.nextInt();
    if (a==0 && b==0 && c==0) return;

    int result;
    if ((result = isArithmetic(a,b,c)) != -1){
    System.out.println("AP " + result);
    } else if ((result = isGeometric(a,b,c)) != -1){
    System.out.println("GP " + result);
    } else{
    }

    }



    }

    private static int isGeometric(int a, int b, int c) {
    if (b%a !=0) return -1;
    if (c%b !=0) return -1;
    int x = b/a;

    if ((c/b) == x) return c*x;
    return -1;
    }

    private static int isArithmetic(int a, int b, int c) {
    int x = b-a;
    if ((c-b) == x) {
    return c+x;
    }
    return -1;
    }
    }


    'Math' 카테고리의 다른 글

    3-6: 준혁이의 수열  (0) 2018.10.24
    3-5: 홍준이와 수열 (PROSJEK)  (0) 2018.10.24
    3-4: 피보나치 수열  (0) 2018.10.24
    3-3: Fly me to the Alpha Centauri  (0) 2018.10.24
    3-2: 벌집  (0) 2018.10.24
Designed by Tistory.