結果
| 問題 | No.1725 [Cherry 3rd Tune D] 無言の言葉 |
| コンテスト | |
| ユーザー |
tamato
|
| 提出日時 | 2021-10-29 22:19:23 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,807 bytes |
| 記録 | |
| コンパイル時間 | 505 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 116,864 KB |
| 最終ジャッジ日時 | 2024-10-07 11:47:24 |
| 合計ジャッジ時間 | 11,883 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 7 WA * 35 |
ソースコード
mod = 1000000007
eps = 10**-9
def main():
import sys
input = sys.stdin.readline
X = input().rstrip('\n')
Y = input().rstrip('\n')
NX = len(X)
NY = len(Y)
NXY = NX + NY
cs_X = [[0] * (NX+1) for _ in range(26)]
for i in range(NX):
x = X[i]
for j in range(26):
c = chr(j + 97)
if c == x:
cs_X[j][i+1] = cs_X[j][i] + 1
else:
cs_X[j][i+1] = cs_X[j][i]
cs_Y = [[0] * (NY+1) for _ in range(26)]
for i in range(NY):
y = Y[i]
for j in range(26):
c = chr(j + 97)
if c == y:
cs_Y[j][i+1] = cs_Y[j][i] + 1
else:
cs_Y[j][i+1] = cs_Y[j][i]
def calc(i, c):
j = ord(c) - 97
res = 0
p = i // NXY
res = p * (cs_X[j][-1] + cs_Y[j][-1])
q = i % NXY
# X
pp = i // (2 * NXY)
if pp & 1:
# rev
res += cs_X[j][NX] - cs_X[j][max(0, NX - q)]
else:
res += cs_X[j][min(q, NX)]
# Y
if q > NX:
ppp = p + 1
cnt = 0
while True:
r = 1 << (ppp.bit_length())
ppp_new = r - ppp
if ppp_new == ppp:
break
ppp = ppp_new
cnt += 1
qq = q - NX
if cnt & 1:
# rev
res += cs_Y[j][NY] - cs_Y[j][NY - qq]
else:
res += cs_Y[j][qq]
return res
Q = int(input())
for _ in range(Q):
l, r, c = input().split()
l = int(l)
r = int(r)
print(calc(r, c) - calc(l-1, c))
#print(calc(r+1, c), calc(l, c))
if __name__ == '__main__':
main()
tamato