1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 第2回P共通テスト過去問題セット(言語選択)
  4. 問題一覧 C編
  5. 数論階層クラスタリング C編

第2回P共通テスト過去問題セットのサムネイル
数論階層クラスタリング C編(paizaランク S 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

長さ N の正整数列 A = (a_1, a_2, ..., a_N) が与えられます。ここで、N は奇数で、A は {1, 2, ..., N} の順列になっています。


長さが 3 以上の数列 A に対して、以下のような一連の操作を考えます。

・数列 A の任意の場所から連続する 3 つの要素を取り出し、これらを順に x, y, z とする。
・取り出した 3 つの要素があった位置に、gcd(x, y), gcd(y, z), gcd(z, x) のうちいずれか 1 つを挿入する。


数列 A の要素数は、1 回の操作につき 2 減少します。そこで、この操作を A の⻑さが 1 になるまで繰り返したときに、最終的に残る値としてありうる最大のものを求めてください。

入力される値

N
a_1 a_2 ... a_N


・1 行目には、数列の長さを表す整数 N が与えられます。
・2 行目には、数列 A の各要素 a_1, a_2, ..., a_N が半角スペース区切りで与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

問題の答えを整数で 1 行で出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件を満たします。

・入力はすべて整数
・1 ≦ N ≦ 200000 = 2 × 10^5
・N は奇数
・1 ≦ a_i ≦ N
・A は {1, 2, ..., N} の順列

入力例1

5
2 1 3 5 4

出力例1

2

入力例2

3
1 2 3

出力例2

1

入力例3

1
1

出力例3

1

問題一覧へ戻る

ページの先頭へ戻る