41 lines
883 B
Kotlin
41 lines
883 B
Kotlin
import kotlin.math.*
|
|
|
|
class NarockSolver(val s: String) {
|
|
companion object {
|
|
val HAXIM: Int = 1000000007
|
|
}
|
|
fun solve(): Int {
|
|
var cntR = 0
|
|
var cntO = 0
|
|
var cntC = 0
|
|
var cntS = 0
|
|
var rfront = 1
|
|
for (v: Char in s) {
|
|
if (v == 'R') {
|
|
cntR += rfront
|
|
cntR %= HAXIM
|
|
} else if (v == 'O') {
|
|
cntO += cntR
|
|
cntO %= HAXIM
|
|
} else if (v == 'C') {
|
|
cntC += cntO
|
|
cntC %= HAXIM
|
|
} else if (v == 'K') {
|
|
cntS += cntC
|
|
cntS %= HAXIM
|
|
}
|
|
rfront *= 2
|
|
rfront %= HAXIM
|
|
}
|
|
|
|
return cntS
|
|
}
|
|
}
|
|
|
|
fun main() {
|
|
readLine()
|
|
val s: String = readLine()!!
|
|
val solver = NarockSolver(s)
|
|
println(solver.solve())
|
|
}
|