[BOJ] 02981 - 검문

[BOJ] 02981 - 검문

import java.util.* fun Euclidean(N: Int, M: Int): Int { var n = N var m = M if (n < m) n = m.also { m = n } while (n % m != 0) { n = m.also { m = n % m } } return m } fun composite(n: Int): List { val forward = arrayListOf() val reverse = arrayListOf(n) var i = 2 while (i*i <= n) { if (n % i == 0) { forward.add(i) reverse.add(n/i) } i++ } return (forward + reverse.reversed()).distinct() } fun main() = with(Scanner(System.`in`)) { var N = nextInt() - 2 var a = nextInt() var b = nextInt() var gcd = b - a while (N-- > 0) { a = b.also { b = nextInt() } gcd = Euclidean(gcd, b - a) } if (gcd < 0) gcd *= -1 println(composite(gcd).joinToString(" ")) }

[*] TestCase는 Github 에서 확인하실 수 있습니다.

from http://onsoim.tistory.com/151 by ccl(A) rewrite - 2021-11-12 23:01:48