[Java 대수]hdu 5429 Geometric Progression

Source : hdu 5429 Geometric Progression
http://acm.hdu.edu.cn/showproblem.php?pid=5429
Problem Description Determine whether a sequence is a Geometric progression or not. In mathematics, a geometric progression, also known as a geometric sequence, is a sequence of numbers where each term after the first is found by multiplying the previous one by a fixed, non-zero number called the common ratio. For example, the sequence 2, 6, 18, 54, … is a geometric progression with common ratio 3. Similarly 10, 5, 2.5, 1.25, … is a geometric sequence with common ratio 1/2. Examples of a geometric sequence are powers rk of a fixed number r, such as 2k and 3k. The general form of a geometric sequence is a, ar, ar2, ar3, ar4, … where r ≠ 0 is the common ratio and a is a scale factor, equal to the sequence’s start value. Input First line contains a single integer T(T≤20) which denotes the number of test cases. For each test case, there is an positive integer n(1≤n≤100) which denotes the length of sequence,and next line has n nonnegative numbers Ai which allow leading zero.The digit’s length of Ai no larger than 100. Output For each case, output “Yes” or “No”.
제목
n 개 수 를 주어 등비 수열 을 구성 할 수 있 는 지 판단 한다(주의 수의 범위)
예시
Sample Input 4 1 0 3 1 1 1 3 1 4 2 5 16 8 4 2 1 Sample Output Yes Yes No Yes
사고의 방향
빅 데이터,내 가 쓰 는 JAVA!
참조 코드
import java.io.*;
import java.util.*;
import java.math.*;

public class Main{
    static BigInteger []a = new BigInteger [110];
    static BigInteger zero = BigInteger.ZERO;
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        int T = cin.nextInt();
        while(T-- >0){
            int n = cin.nextInt();
            boolean has0 = false,all0 = true;
            for(int i = 0; i < n; ++ i){
                a[i] = cin.nextBigInteger();
                if(a[i].compareTo(zero) == 0) has0 = true;
                else all0 = false;
            }
            if(all0 == true){System.out.println("Yes");continue;}
            if(has0 == true){System.out.println("No");continue;}
            boolean ok = true;
            for(int i = 2; i < n; ++ i){
                if(a[i-1].multiply(a[i-1]).equals(a[i-2].multiply(a[i])) == false)
                {
                    ok = false;
                    break;
                }
            }
            if(ok) System.out.println("Yes");
            else System.out.println("No");
        }

    }

}
  • 굵게Ctrl + B
  • 기울 임 꼴Ctrl + I
  • 인용Ctrl + Q
  • 링크 삽입Ctrl + L
  • 코드 삽입Ctrl + K
  • 그림 삽입Ctrl + G
  • 제목 올 리 기Ctrl + H
  • 질서 있 는 목록Ctrl + O
  • 무질서 목록Ctrl + U
  • 횡선Ctrl + R
  • 철회Ctrl + Z
  • 다시 하기Ctrl + Y
  • 좋은 웹페이지 즐겨찾기