Kotlin μ½νλ¦° λ°±μ€ 25344 νμ± μ λ ¬
λ¬Έμ
νμ± μ λ ¬μ νμ±λ€μ΄ μΌμ§μ μΌλ‘ μ λ ¬λ κ²μ²λΌ 보μ΄λ νμμ΄λ€. μ΅κ·Ό μ§κ΅¬μμλ 18λ λ§μ νμ± μ λ ¬μ κ΄μΈ‘ν μ μμλ€.
ννμΈκ³μ μ€μκ° μ΄κ³ μλ μ§κ΅¬μμλ κ°μ νμ±μ κ΄μΈ‘ν μ μλ€. μ€μλ μΌλ§λ κΈ°λ€λ €μΌ κ°μ νμ±μ΄ μΌλ ¬λ‘ λμ΄λλ μκ°μ λ³Ό μ μμμ§ κΆκΈν΄μ‘λ€.
νλμ μ΄μ¬ν κ΄μ°°ν κ²°κ³Ό, μ€μλ λ€μ μ¬μ€λ€μ μ μ μμλ€.
- βπκ°μ νμ±μ΄ μΌλ ¬λ‘ λμ΄λλ μκ°μ΄ μ‘΄μ¬νλ€.
- νμ± μ λ ¬μ μ£ΌκΈ°λ $10^{9}$μ΄ μ΄νμ΄λ€.
- 1, 2, 3λ²μ§Έ νμ±μ μ΄λ§λ€ μΌλ ¬λ‘ λμ΄λλ€.
- β2, 3, 4λ²μ§Έ νμ±μ μ΄λ§λ€ μΌλ ¬λ‘ λμ΄λλ€.
- ...
- μ΄λ§λ€ μΌλ ¬λ‘ λμ΄λλ€. λ²μ§Έ νμ±μ
μ€μλ₯Ό μν΄ νμ± μ λ ¬μ μ£ΌκΈ°λ₯Ό ꡬν΄μ£Όμ.
μ λ ₯
첫째 μ€μ μ λ ¬λκΈΈ λ°λΌλ νμ±μ κ°μ μ΄ μ£Όμ΄μ§λ€. ( )
λμ§Έ μ€μ νμ±μ΄ μΌλ ¬λ‘ λμ΄λλ μ£ΌκΈ°λ₯Ό λνλ΄λ μ μ κ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. (
νμ± μ λ ¬μ μ£ΌκΈ°λ₯Ό μΆλ ₯νλ€. νμ± μ λ ¬μ μ£ΌκΈ°λ μ΄ μ΄νμ΄λ€.
λ¬Έμ νμ΄
λͺ¨λ νμ± μ λ ¬ μ£ΌκΈ°μ μ΅μ 곡배μλ₯Ό ꡬν΄μ£Όλ©΄ λλ€.
νμ± μ λ ¬μ μ£ΌκΈ°κ° $10^9$μ΄ μ΄νλΌλ μ‘°κ±΄μ΄ μμΌλ―λ‘ Intλμ Longμ μ¬μ©νλ κ²μ΄ μ’λ€.
μ΅λ 곡μ½μ(GCD) ꡬνκΈ°
μ΅μ 곡배μ(LCM)λ₯Ό ꡬνκΈ° μν΄μλ μ΅λ 곡μ½μ(GCD)κ° νμνλ€.
μ΅λ 곡μ½μλ₯Ό κ°λ¨νκ² κ΅¬νλ λ°©λ²μΌλ‘λ 'μ ν΄λ¦¬λ νΈμ λ²'μ΄ μλ€.
λ μμ λλ¨Έμ§κ° 0μ΄ λμ¬ λ κΉμ§ κ³μ μ¬κ·ν¨μλ₯Ό λλ €μ£Όλ©΄ λλ€!
private fun gcd(a: Long, b: Long): Long {
if (b == 0L) return a
return gcd(b, a % b)
}
μ΅μ 곡배μ(LCM) ꡬνκΈ°
μ΅λ 곡μ½μλ‘ μ΅μ 곡배μλ₯Ό λ§λ€λ €λ©΄,
λ μμ κ³±μ μ΅λ 곡μ½μλ₯Ό λλλ©΄ λλ€.
private fun lcm(a: Long, b: Long): Long {
return a * b / gcd(a, b)
}
μ½λ
/**
* νμ± μ λ ¬
* https://www.acmicpc.net/problem/25344
*/
private var n = 0
private var list = listOf<Long>()
private fun solution() {
var lcm = list[0]
for (i in 1 until list.size) {
lcm = lcm * list[i] / gcd(lcm, list[i])
}
println(lcm)
}
private fun gcd(a: Long, b: Long): Long {
if (b == 0L) return a
return gcd(b, a % b)
}
private fun input() = with(System.`in`.bufferedReader()) {
n = readLine().toInt()
list = readLine().split(" ").map { it.toLong() }
close()
}
fun main() {
input()
solution()
}