Submission #58824906


Source Code Expand

Copy
"""
<>
- (`T`)
- `26`
- `a`
- `T` `a` `a`
- `a` `a`
- `a` `3` `a`
"""
#
S = input()
#
T = [ord(S[i]) - ord("A") for i in range(len(S))]
#
ans = 0
#
for a in range(26):
# a
allCnt = T.count(a)
# a
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
"""
<方針>
- アルファベットを数字に変換(`T`)して考える.
- どのアルファベットを左右に持ってくるかで `26` ループをする.
- 左右に持ってくるアルファベット数値を仮に `a` とする.
  - `T` で `a` が連続している部分と, `a` でない部分が連続している部分で分ける.
  - `a` でない部分が中心に選ばれたと考え,その左右に存在する `a` の数で掛け算をする.
  - `a` が `3` つ以上ある時は,中心も全て `a` のパターンがあるので,それを足す.
"""
# 入力
S = input()
# 数値に変換
T = [ord(S[i]) - ord("A") for i in range(len(S))]

# 答えの数
ans = 0
# 全てのアルファベットに注目する.
for a in range(26):
  # aの数を計算
  allCnt = T.count(a)
  # aが連続している回数のリスト
  A = []
  # aでない部分が連続している回数のリスト
  B = []
  # 現在aであるかどうか
  nowA = False
  # 現在の連続カウント
  nowCnt = 0
  # 数値を走査する
  for i in range(len(T)):
    # aのとき
    if(T[i] == a):
      # 連続
      if(nowA):
        nowCnt += 1
      # 変化
      else:
        nowA = True
        B.append(nowCnt)
        nowCnt = 1
    # aでない時
    else:
      # 変化
      if(nowA):
        nowA = False
        A.append(nowCnt)
        nowCnt = 1
      # 連続
      else:
        nowCnt += 1
  # aが一つもないパターンの例外処理のための番兵
  A.append(0)
  # 左側にあるaの数
  left = A[0]
  # 中心にaでない数値のパターンを答えに追加する.
  for i in range(1, len(B)):
    # 左と中心と右の掛け算
    ans += left*B[i]*(allCnt-left)
    # 左の数を増やす
    left += A[i]
  
  # aが3以上ある時
  if(allCnt>=3):
    # 組み合わせ(nCr)を足す.
    ans += (allCnt*(allCnt-1)*(allCnt-2))//(3*2*1)
# 出力
print(ans)

Submission Info

Submission Time
Task D - ABA
User mattsunkun
Language Python (PyPy 3.10-v7.3.12)
Score 400
Code Size 2006 Byte
Status AC
Exec Time 102 ms
Memory 97176 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 34
Set Name Test Cases
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt
Case Name Status Exec Time Memory
sample00.txt AC 61 ms 76428 KB
sample01.txt AC 61 ms 76648 KB
sample02.txt AC 60 ms 76324 KB
testcase00.txt AC 59 ms 76508 KB
testcase01.txt AC 59 ms 76472 KB
testcase02.txt AC 60 ms 76592 KB
testcase03.txt AC 65 ms 81384 KB
testcase04.txt AC 87 ms 83092 KB
testcase05.txt AC 78 ms 81764 KB
testcase06.txt AC 96 ms 93428 KB
testcase07.txt AC 77 ms 81524 KB
testcase08.txt AC 97 ms 95728 KB
testcase09.txt AC 77 ms 81540 KB
testcase10.txt AC 96 ms 97176 KB
testcase11.txt AC 74 ms 81716 KB
testcase12.txt AC 95 ms 93952 KB
testcase13.txt AC 78 ms 81744 KB
testcase14.txt AC 98 ms 88128 KB
testcase15.txt AC 91 ms 84232 KB
testcase16.txt AC 99 ms 84832 KB
testcase17.txt AC 73 ms 81544 KB
testcase18.txt AC 97 ms 84292 KB
testcase19.txt AC 82 ms 82044 KB
testcase20.txt AC 100 ms 84572 KB
testcase21.txt AC 82 ms 81872 KB
testcase22.txt AC 96 ms 84304 KB
testcase23.txt AC 82 ms 82208 KB
testcase24.txt AC 99 ms 84656 KB
testcase25.txt AC 79 ms 82060 KB
testcase26.txt AC 100 ms 84376 KB
testcase27.txt AC 92 ms 84024 KB
testcase28.txt AC 102 ms 84264 KB
testcase29.txt AC 82 ms 81852 KB
testcase30.txt AC 101 ms 84408 KB


2025-04-09 (Wed)
05:09:32 +00:00