白駿Baekjoon 1731号推論-JAVA


https://www.acmicpc.net/problem/1731
質問する
等差が整数の等差数列(ある数に1つの数を加えた数列)は、2つの数字で表すことができます.Pは数列の最初の数であり、Qは次の数になるために前の数に加算しなければならない数である.例えば、P=1、Q=2の場合、その等差数列は1、3、5、7…いいですよ.
等比が整数の等比数列(ある数から順に同じ数を乗じた数列)は、近似的に2つの数字で表すことができる.Pは数列の最初の数で、Qは前の数を乗じた数です.例えば、P=3、Q=2の場合、等比数列は3、6、12…いいですよ.
テディは世界で数学が一番好きな人で、毎日この数列が等差数列なのか等差数列なのかを決めて、次の数を求めます.
数列を指定する場合は、その数列のルールが等差数列か等差数列かを決定し、次の出現する数列を求めるプログラムを作成します.
入力
第1行は、数列の長さNを与える.2行目から、N行は数列の各要素を順次与える.与えられた数列は、等差数列または等比数列の1つです.Nは常に3以上50以下、入力は106以下の自然数である.
しゅつりょく
最初の行の出力数列の次の要素.これは20億以下の自然数です.
入力例1
4
364
843
1322
1801
サンプル出力1
2280
入力例2
8
394
1172
1950
2728
3506
4284
5062
5840
サンプル出力2
6618
入力例3
5
13
117
1053
9477
85293
サンプル出力3
767637
入力例4
4
22
220
2200
22000
サンプル出力4
220000
入力例5
3
250000
500000
1000000
サンプル出力5
2000000
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int[] n = new int[num];

		for (int i = 0; i < n.length; i++) {
			n[i] = scan.nextInt();
		}
		scan.close();

		if (n[2] - n[1] == n[1] - n[0])
			System.out.println(n[n.length - 1] + (n[1] - n[0]));
		else
			System.out.println(n[n.length - 1] * (n[1] / n[0]));
	}
}
  • 説明
  • の等比か等差かは、まず等差であると判断し、その後、アレイ間の差で加算または
  • を乗じる.