private void solveC() {
int numN = nextInt();
BigDecimal[] times = new BigDecimal[numN];
for (int i = 0; i < numN; i++) {
times[i] = new BigDecimal(next());
}
/*
* 1つしか要素がない場合は要素の秒数がかかる秒数
*/
if (times.length == 1) {
out.println(times[0]);
return;
}
/*
* 最小公倍数を求める
*/
BigDecimal res = BigDecimal.ZERO;
for (int i = 1; i < times.length; i++) {
if (i == 1) {
res = getMinKoubaisu(times[i - 1], times[i]);
} else {
res = getMinKoubaisu(res, times[i]);
}
}
out.println(res.longValue());
}
private BigDecimal getMinKoubaisu(BigDecimal val1, BigDecimal val2) {
BigDecimal wk = getMaxKouyaku(val1, val2);
return (val1.multiply(val2).divide(wk));
}
private BigDecimal getMaxKouyaku(BigDecimal val1, BigDecimal val2) {
BigDecimal wkVal1 = val1.compareTo(val2) <= 0 ? val1 : val2;
BigDecimal wkVal2 = val1.compareTo(val2) > 0 ? val1 : val2;
BigDecimal amari = wkVal2.remainder(wkVal1);
while (!amari.equals(BigDecimal.ZERO)) {
wkVal2 = wkVal1;
wkVal1 = amari;
amari = wkVal2.remainder(wkVal1);
}
return wkVal1;
}