trang chủ / đề bài / dnaalign

So khớp DNA

Đề bài

Mô tả

Với hai xâu s và t cùng độ dài n, đặt h(s,t) là số vị trí mà hai xâu có cùng ký tự.

Ký hiệu s(i) là xâu thu được từ s sau i lần dịch vòng sang trái. Khoảng cách Vasya giữa hai xâu độ dài n được định nghĩa là

ρ(s,t)=∑i=0n−1∑j=0n−1h(s(i),t(j)).

Chẳng hạn với s= AGC và t= CGT:

ρ(AGC,CGT)=1+1+0+0+1+1+1+0+1=6.

Cho xâu s độ dài n chỉ gồm các ký tự A, C, G, T. Hãy đếm số xâu t độ dài n cũng chỉ gồm các ký tự A, C, G, T sao cho ρ(s,t) đạt giá trị lớn nhất có thể. Hai xâu t1≠t2 được tính là hai xâu khác nhau ngay cả khi xâu này là một phép dịch vòng của xâu kia.

Kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài xâu.
  • Dòng thứ hai chứa xâu s độ dài n gồm các ký tự A, C, G, T.

Dữ liệu ra

Một số nguyên duy nhất: số xâu t làm ρ(s,t) đạt giá trị lớn nhất, lấy phần dư cho 109+7.

Ràng buộc

  • 1≤n≤105
  • s chỉ gồm các ký tự A, C, G, T

Ví dụ

Input Output Giải thích
1
C
1 ρ(C,C)=1, còn ba xâu độ dài 1 khác đều cho ρ=0. Vậy chỉ có một xâu tối ưu.
2
AG
4 Bốn xâu AG, GA, AA, GG đều cho ρ=4, đây là giá trị lớn nhất.
3
TTT
1 Chỉ t= TTT cho ρ=27, mọi xâu khác đều nhỏ hơ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