Submission #43942246


Source Code Expand

P = 10**9+7
S = gets.chomp.bytes
Q = S.inject([0]){|s,b| s<<s[-1]+(b==63 ? 1 : 0) }
A = S.inject([0]){|s,b| s<<s[-1]+(b==65 ? 1 : 0) }
C = S.reverse_each.inject([0]){|s,b| s<<s[-1]+(b==67 ? 1 : 0) }
C.pop
p S.sum{|b|
	q = Q.shift
	a = A.shift
	c = C.pop
	qr = Q[-1]-q
	qr -= 1 if b==63
	ka = a*3.pow(q,P)
	ka += q*3.pow(q-1,P) if 0<q
	kb = b==65||b==67 ? 0 : 1
	kc = c*3.pow(qr,P)
	kc += qr*3.pow(qr-1,P) if 0<qr
	next ka*kb*kc
}%P

Submission Info

Submission Time
Task D - We Love ABC
User ds14050
Language Ruby (2.7.1)
Score 400
Code Size 451 Byte
Status AC
Exec Time 220 ms
Memory 18244 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 23
Set Name Test Cases
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23
Case Name Status Exec Time Memory
a01 AC 61 ms 14032 KiB
a02 AC 56 ms 14108 KiB
a03 AC 57 ms 14064 KiB
b04 AC 57 ms 14152 KiB
b05 AC 55 ms 14208 KiB
b06 AC 55 ms 14104 KiB
b07 AC 56 ms 14152 KiB
b08 AC 53 ms 14168 KiB
b09 AC 56 ms 14220 KiB
b10 AC 107 ms 17980 KiB
b11 AC 220 ms 18200 KiB
b12 AC 109 ms 18152 KiB
b13 AC 105 ms 18208 KiB
b14 AC 115 ms 18108 KiB
b15 AC 116 ms 18244 KiB
b16 AC 122 ms 18048 KiB
b17 AC 121 ms 18216 KiB
b18 AC 75 ms 14716 KiB
b19 AC 57 ms 14236 KiB
b20 AC 86 ms 15012 KiB
b21 AC 208 ms 18060 KiB
b22 AC 209 ms 18224 KiB
b23 AC 191 ms 18116 KiB