結果

問題 No.1281 Cigarette Distribution
ユーザー rutilicusrutilicus
提出日時 2020-11-07 21:54:37
言語 Kotlin
(1.9.23)
結果
AC  
実行時間 558 ms / 2,000 ms
コード長 828 bytes
コンパイル時間 10,877 ms
コンパイル使用メモリ 444,784 KB
実行使用メモリ 64,068 KB
最終ジャッジ日時 2024-07-22 14:51:31
合計ジャッジ時間 20,910 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 291 ms
56,916 KB
testcase_01 AC 290 ms
56,912 KB
testcase_02 AC 288 ms
56,848 KB
testcase_03 AC 294 ms
56,956 KB
testcase_04 AC 296 ms
56,860 KB
testcase_05 AC 291 ms
56,856 KB
testcase_06 AC 291 ms
56,960 KB
testcase_07 AC 285 ms
56,900 KB
testcase_08 AC 293 ms
56,836 KB
testcase_09 AC 288 ms
56,872 KB
testcase_10 AC 285 ms
56,844 KB
testcase_11 AC 291 ms
57,032 KB
testcase_12 AC 401 ms
59,244 KB
testcase_13 AC 481 ms
61,824 KB
testcase_14 AC 436 ms
59,276 KB
testcase_15 AC 406 ms
59,064 KB
testcase_16 AC 420 ms
59,352 KB
testcase_17 AC 289 ms
56,932 KB
testcase_18 AC 536 ms
63,976 KB
testcase_19 AC 550 ms
64,068 KB
testcase_20 AC 558 ms
64,024 KB
testcase_21 AC 442 ms
61,376 KB
testcase_22 AC 495 ms
61,924 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:14:17: warning: 'appendln(Long): kotlin.text.StringBuilder /* = java.lang.StringBuilder */' is deprecated. Use appendLine instead. Note that the new method always appends the line feed character '\n' regardless of the system line separator.
        builder.appendln(pow(moreNum, moreBox, mod) * pow(lessNum, lessBox, mod) % mod * (lessNum - 1L) % mod)
                ^

ソースコード

diff #

fun main() {
    val builder = StringBuilder()

    // 解説読んだ
    val mod = 1000000007L

    val (n, m) = readInputLine().split(" ").map { it.toLong() }

    for (i in LongRange(1L, m)) {
        val moreNum = (n + 1L) / i + 1L
        val lessNum = moreNum - 1L
        val moreBox = (n + 1L) % i
        val lessBox = i - moreBox - 1L
        builder.appendln(pow(moreNum, moreBox, mod) * pow(lessNum, lessBox, mod) % mod * (lessNum - 1L) % mod)
    }

    print(builder.toString())
}

fun readInputLine(): String {
    return readLine()!!
}

fun pow(x: Long, n: Long, mod: Long): Long {
    var ret = 1L
    var base = x
    var nTmp = n

    while (nTmp != 0L) {
        if (nTmp % 2L != 0L) {
            ret = ret * base % mod
        }
        base = base * base % mod
        nTmp /= 2L
    }

    return ret
}
0