結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
|
提出日時 | 2019-07-27 03:12:00 |
言語 | Kotlin (2.1.0) |
結果 |
AC
|
実行時間 | 1,233 ms / 3,153 ms |
コード長 | 1,853 bytes |
コンパイル時間 | 15,700 ms |
コンパイル使用メモリ | 443,312 KB |
実行使用メモリ | 75,976 KB |
最終ジャッジ日時 | 2024-11-20 19:11:59 |
合計ジャッジ時間 | 72,431 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 92 |
コンパイルメッセージ
Main.kt:1:10: warning: parameter 'args' is never used fun main(args: Array<String>) { ^ Main.kt:88:16: warning: 'toByte(): Byte' is deprecated. Conversion of Char to Number is deprecated. Use Char.code property instead. while ('0'.toByte() > peek()) next() ^ Main.kt:89:16: warning: 'toByte(): Byte' is deprecated. Conversion of Char to Number is deprecated. Use Char.code property instead. while ('0'.toByte() <= peek()) { ^ Main.kt:90:38: warning: 'toLong(): Long' is deprecated. Conversion of Char to Number is deprecated. Use Char.code property instead. ans = ans * 10 + (peek() - '0'.toLong()) ^
ソースコード
fun main(args: Array<String>) { val table = BooleanArray(2001, {true}) val primes: MutableList<Int> = mutableListOf() for (i in 2..2000) { if (table[i]) { primes.add(i) for (j in 2*i..2000 step i) { table[j] = false } } } val rd = Reader() val N = rd.int() val A = IntArray(N) val zero = IntArray(N+1) for (i in 0..N-1) { A[i] = rd.int() zero[i+1] = zero[i] + (if (A[i] == 0) 1 else 0) } val Q = rd.int() val P = IntArray(Q) val L = IntArray(Q) val R = IntArray(Q) for (i in 0..Q-1) { P[i] = rd.int() L[i] = rd.int() - 1 R[i] = rd.int() } val ruiseki = IntArray(N+1) val kotae = BooleanArray(Q, {true}) for (p in primes) { ruiseki.fill(0) for (i in 0..N-1) { ruiseki[i+1] = ruiseki[i] if (A[i] == 0) continue while (A[i] % p == 0) { ruiseki[i+1]++; A[i] /= p } } for (i in 0..Q-1) { if (zero[R[i]] - zero[L[i]] > 0) { P[i] = 1 continue } var k = 0 while (P[i] % p == 0) { P[i] /= p k++ } if (ruiseki[R[i]] - ruiseki[L[i]] < k) kotae[i] = false } } for (i in 0..Q-1) { if (P[i] != 1) kotae[i] = false println(if (kotae[i]) "Yes" else "NO") } } class Reader { var buf: ByteArray = ByteArray(5000000) var k: Int = 0 var n: Int = 0 init { check() } private fun check() { if (k == n) { n = System.`in`.read(buf) k = 0 } } private fun peek(): Byte { return buf[k] } private fun next() { k++ check() } fun long(): Long { var ans: Long = 0 while ('0'.toByte() > peek()) next() while ('0'.toByte() <= peek()) { ans = ans * 10 + (peek() - '0'.toLong()) next() } return ans } fun int(): Int { return long().toInt() } }