torus711 のアレ

主に競技プログラミングの問題について書きます

Croc Champ 2013, Round 2, Div2 Edition, A : Ksusha and Array

概要

n 項からなる数列が与えられる。
数列中の全ての要素を割り切ることができる要素を一つ出力せよ。
存在しない場合は -1 で示せ。

解法

a / b を考えたとき、a < b ならば割り切ることはできません。
従って、答えの候補になるのは数列中で最小の要素のみです。
最小の要素で全ての要素を割り切れればそれを出力し、そうでなければ -1 を出力します。

コード

main = do
	getLine
	(a:as) <- sort . map read . words <$> getLine
	print $ if all ( ( == 0 ) . ( `mod` a ) ) as then a else -1