結果

問題 No.2766 Delicious Multiply Spice
ユーザー ripityripity
提出日時 2022-07-29 00:25:52
言語 Kotlin
(2.1.0)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 6,177 bytes
コンパイル時間 19,209 ms
コンパイル使用メモリ 454,772 KB
実行使用メモリ 54,468 KB
最終ジャッジ日時 2024-12-20 22:05:32
合計ジャッジ時間 33,062 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 8
other AC * 23 RE * 8
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:161:54: warning: 'toLong(): Long' is deprecated. Conversion of Char to Number is deprecated. Use Char.code property instead.
            cs[i] = modP(cs[i-1] + mul(pb[i], s[i-1].toLong()))
                                                     ^

ソースコード

diff #
プレゼンテーションモードにする

import java.io.*
import java.util.*
import kotlin.math.*
fun main() {
// val T = nextInt()
// repeat(T) {solve()}
// pw.flush()
solve()
pw.flush()
}
fun solve() {
val N = nextInt()
val que = LinkedList<Pair<String, Int>>()
que.offer(Pair("", N))
while( !que.isEmpty() ) {
val p = que.poll()
val s = p.first
val n = p.second
if( n == 1 ) { pw.println(s); break }
if( n%2 == 1 ) que.offer(Pair("A"+s, (n-1)/2))
if( n%3 == 1 ) que.offer(Pair("B"+s, (n-1)/3))
}
}
/* struct begin */
data class Cell(val r: Int, val c: Int)
data class Point(val x: Long, val y: Long)
data class Pii(val fi: Int, val se: Int)
data class Edge(val to: Int, val w: Long)
class SegmentTree {
val INF = 1 shl 30
val N = 1 shl 19
var a = IntArray(2*N) { INF }
fun update(idx: Int, x: Int) {
var i = idx + N
a[i] = x
while( i > 1 ) {
i = i shr 1
val l = 2 * i
val r = 2 * i + 1
a[i] = min(a[l], a[r])
}
}
fun rmq(L: Int, R: Int): Int {
var l = L + N
var r = R + N
var res = INF
while( l < r ) {
if( (l and 1) == 1 ) { res = min(res, a[l]); l++ }
if( (r and 1) == 1 ) { r--; res = min(res, a[r]) }
l = l shr 1
r = r shr 1
}
return res
}
}
class BinaryIndexedTree(n: Int) {
val N = n
var a = Array<Long>(N+1) { 0L }
fun sum(l: Int, r: Int): Long = sumSub(r-1)-sumSub(l-1)
fun sumSub(i: Int): Long {
var idx = i+1
var res = 0L
while( idx > 0 ) {
res += a[idx]
idx -= idx and (-idx)
}
return res
}
fun add(i: Int, x: Long) {
var idx = i+1
while( idx <= N ) {
a[idx] += x
idx += idx and (-idx)
}
}
}
class UnionFind(n: Int) {
val N = n
var parent = Array<Int>(N) {it}
var rank = Array<Int>(N) {1}
fun root(x: Int): Int {
if( parent[x] == x ) {
return x
}else {
parent[x] = root(parent[x])
return parent[x]
}
}
fun unite(x: Int, y: Int) {
val rx = root(x)
val ry = root(y)
parent[ry] = rx
}
fun same(x: Int, y: Int): Boolean = (root(x) == root(y))
}
class RollingHash(S: String) {
val s = S
val N = s.length
val P = (1L shl 61) - 1
val B = 565625656256562L
val C = 2210565333882893047L
val MASK30 = (1L shl 30) - 1
val MASK31 = (1L shl 31) - 1
var pb = LongArray(N+1) { 1L }
var pc = LongArray(N+1) { 1L }
var cs = LongArray(N+1) { 0L }
fun init() {
for( i in 1..N ) {
pb[i] = mul(pb[i-1], B)
pc[i] = mul(pc[i-1], C)
cs[i] = modP(cs[i-1] + mul(pb[i], s[i-1].toLong()))
}
}
fun hash(l: Int, r: Int): Long {
return mul(cs[r] - cs[l] + P, pc[l])
}
fun mul(a: Long, b: Long): Long {
val au = a shr 31
val ad = a and MASK31
val bu = b shr 31
val bd = b and MASK31
val m = au * bd + bu * ad
val mu = m shr 30
val md = m and MASK30
return modP(2 * au * bu + mu + (md shl 31) + ad * bd)
}
fun modP(x: Long): Long {
val xu = x shr 61
val xd = x and P
if( xu + xd >= P ) return (xu + xd - P)
else return (xu + xd)
}
}
/* struct end */
/* math begin */
fun intceil(x: Double) = ceil(x).toInt()
fun intfloor(x: Double) = floor(x).toInt()
fun gcd(x: Long, y: Long): Long {
var a = max(abs(x), abs(y))
var b = min(abs(x), abs(y))
var r: Long
do {
r = a%b
a = b
b = r
}while( r > 0 )
return a
}
fun modpow(X: Long, T: Long, P: Long = 9223372036854775807L): Long {
var x = X
var t = T
if( t == 0L ) {
return 1L
}else {
var res = 1L
while( t > 0 ) {
if( t%2L == 1L ) {
res *= x
res %= P
t -= 1L
}
x *= x
x %= P
t /= 2
}
return res%P
}
}
/* math end */
/* utility begin */
fun cumulativeSum(a: LongArray): LongArray {
val N = a.size
var s = LongArray(N+1) { 0L }
for( i in 1..N ) {
s[i] = s[i-1]+a[i-1]
}
return s
}
fun rlowerBound(a: LongArray, x: Long): Int {
val N = a.size
var high = N-1
var low = 0
var mid: Int
while( low < high ) {
mid = (high+low+1)/2
if( a[mid] > x ) high = mid-1
else low = high
}
return high
}
fun lowerBound(a: IntArray, x: Int): Int {
val N = a.size
var high = N-1
var low = 0
var mid: Int
while( low < high ) {
mid = (high+low)/2
if( a[mid] < x ) low = mid+1
else high = mid
}
return low
}
fun permInv(p: IntArray): IntArray {
val N = p.size
var res = IntArray(N) { -1 }
for( i in 0 until N ) {
res[p[i]] = i
}
return res
}
/* utility end */
/* I/O begin */
var st = StringTokenizer("")
val br = System.`in`.bufferedReader()
val pw = PrintWriter(System.out, false)
fun nextInt() = next().toInt()
fun nextLong() = next().toLong()
fun nextLine() = br.readLine()!!
fun nextDouble() = next().toDouble()
fun nextStrarr(n: Int) = Array<String>(n) { next() }
fun nextIntarr(n: Int, dec: Int = 0) = IntArray(n) { nextInt()-dec }
fun nextLongarr(n: Int, dec: Long = 0L) = LongArray(n) { nextLong()-dec }
fun next(): String {
while( !st.hasMoreTokens() ) st = StringTokenizer(br.readLine()!!)
return st.nextToken()
}
/* I/O end */
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0