AtCoder Beginner Contest 171 - F - Strivore

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Có bao nhiêu xâu có thể được tạo thành bằng cách áp dụng thao tác sau trên một xâu \(S\) cho trước đúng \(K\) lần: "chọn một ký tự in thường trong bảng chữ cái tiếng Anh và chèn vào bất cứ đâu trong xâu \(S\)"?

Đáp án có thể rất lớn, nên hãy in kết quả chia lấy dư cho \((10^9+7)\).

Input

  • Dòng đầu tiên chứa một số nguyên \(K\) \((1 \leq K \leq 10^6)\).
  • Dòng thứ hai chứa một xâu \(S\) có độ dài dương không quá \(10^6\), chỉ gồm các ký tự trong bảng chữ cái tiếng Anh.

Output

  • In ra số lượng xâu thỏa mãn đề bài, chia lấy dư cho \((10^9+7)\).

Example

Test 1

Input
5
oof
Output
575111451
Note

Ví dụ, chúng ta có thể tạo ra các xâu proofend, moonwolf, và onionpuf; nhưng ta không thể tạo ra xâu oofsix (quá ngắn), oofelevennn (quá dài), hay voxafolt và fooooooo (không được tạo thành từ xâu oof).

Test 2

Input
37564
whydidyoudesertme
Output
318008117

Constraints

  • \(1 \leq K \leq 10^6\)
  • \(1 \leq |S| \leq 10^6\)
  • \(S\) chỉ gồm các ký tự tiếng Anh in thường.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.