trang chủ / đề bài / hcm_tst_23_e

Cửa hàng trà sữa

Đề bài

Mô tả

Sau những ngày chinh chiến cùng các kỳ thi lập trình thi đấu, Tài đã về nhà mở một cửa hàng trà sữa của riêng mình. Cửa hàng có 3 loại trà đặc biệt là: trà sữa hạnh nhân, trà sữa sen vàng và trà sữa gừng. Các loại trà sữa này được pha chế theo cách rất đặc biệt làm người thưởng thức có trải nghiệm khó quên. Nhân dịp khai trương, cửa hàng xếp các ký tự H, S và G đại diện cho các loại trà sữa trên thành một dãy có độ dài N và mỗi khách đến mua có thể tham gia một chương trình khuyến mãi như sau: khách chọn ra dãy các ký tự liên tiếp tương ứng với các loại trà mà mình muốn mua; Tài sẽ đếm số lượng các ký tự H, S, G có trong dãy đã chọn và nhân các giá trị này lại với nhau; nếu kết quả thu được là một lũy thừa của 2 thì khách hàng sẽ nhận được phiếu giảm giá.

Yêu cầu: Hãy viết chương trình cho biết với một khách hàng, số cách để nhận được chương trình khuyến mãi của chủ cửa hàng. Cụ thể là đếm số cặp chỉ số (L,R) với 1≤L≤R≤N sao cho nếu gọi a,b,c lần lượt là số lượng ký tự H, S, G có trong đoạn dãy con liên tiếp từ L đến R thì tích a×b×c là một lũy thừa của 2.

Lũy thừa của 2 là các số 2k với k≥0 nguyên, tức là 1,2,4,8,… (số 1=20 cũng được tính). Nếu đoạn không chứa đủ cả ba loại ký tự thì tích bằng 0, không phải lũy thừa của 2.

Dữ liệu vào

Một dòng duy nhất chứa N ký tự thuộc {H,S,G} viết liên tiếp nhau không dấu cách, trong đó 1≤N≤105.

Dữ liệu ra

In ra một số nguyên là số cách để nhận được khuyến mãi, cũng chính là số chuỗi con thỏa mãn yêu cầu đã nêu.

Ràng buộc

  • 1≤N≤105.
  • Mỗi ký tự của dãy là H, S hoặc G.

Subtasks

  • Subtask 1 (20% số điểm): N≤102.
  • Subtask 2 (40% số điểm): 102<N≤103.
  • Subtask 3 (40% số điểm): 103<N≤105.

Ví dụ

Input Output Giải thích
HHSSGG 4 Các chuỗi con thỏa mãn là: HSSG: số lượng mỗi ký tự là 1,2,1 nên tích các số lượng trà sữa là 2, là lũy thừa của 2 và thỏa mãn. HSSGG: tích số lượng trà sữa là 1·2·2=4. HHSSG: tích số lượng trà sữa là 2·2·1=4. HHSSGG: tích số lượng trà sữa là 2·2·2=8.
HSG 1 Ví dụ bổ sung. Chỉ chuỗi con HSG chứa đủ ba loại ký tự, tích bằng 1·1·1=1=20 nên được tính. Các chuỗi con còn lại có tích bằng 0.
HHHSG 2 Ví dụ bổ sung. HSG có tích 1, HHSG có tích 2 đều thỏa mãn; HHHSG có tích 3 không thỏa mãn.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0