結果

問題 No.852 連続部分文字列
コンテスト
ユーザー pekempey
提出日時 2019-07-27 03:31:41
言語 Kotlin
(2.3.20)
コンパイル:
kotlinc _filename_ -include-runtime -d main.jar
実行:
kotlin main.jar
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,076 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 6,983 ms
コンパイル使用メモリ 429,588 KB
最終ジャッジ日時 2026-05-14 22:36:21
合計ジャッジ時間 7,788 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge3_1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
Main.kt:43:25: error: 'fun toChar(): Char' is deprecated. Direct conversion to Char is deprecated. Use toInt().toChar() or Char constructor instead.
      ans.append(peek().toChar())
                        ^^^^^^

ソースコード

diff #
raw source code

fun main(args: Array<String>) {
  val rd = Reader()
  val S = rd.string()
  val N = S.length
  val mae = IntArray(26, {-1})
  var kotae = 0L
  for (i in 0..N-1) {
    kotae += (i - mae[S[i] - 'a']).toLong() * (N - i)
    mae[S[i] - 'a'] = i
  }
  println(2.0 * kotae / N / (N + 1))
}

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 string(): String {
    var ans = StringBuilder()
    while ('0'.toByte() > peek()) next()
    while ('0'.toByte() <= peek()) {
      ans.append(peek().toChar())
      next()
    }
    return ans.toString()
  }

  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()
  }
}
0