

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Ý tưởng:
Ta có thể thấy một nhóm các kí tự giống nhau liên tiếp có thể là xâu bị lỗi của một hoặc nhiều
kí tự đó. Vì thế ta có thể chia xâu bị lỗi ra thành từng nhóm kí tự giống nhau liên tiếp: $cnt_1$ kí
tự $c_1$ , $cnt_2$ kí tự $c_2$, . . . , $cnt_k$ kí tự $c_k$.
Ví dụ xâu "tyypppinng" được chia thành 1 kí tự ’t’, 2 kí tự ’y’, 3 kí tự ’p’, 1 kí tự ’i’, 2 kí tự ’n’,
1 kí tự ’g’.
Một nhóm có $cnt_i$ kí tự như vậy có thể được tạo thành từ 1, 2, . . . , $cnt_i$ ban đầu hay chính là
có $cnt_i$ xâu có thể tạo thành xâu đó. Vì vậy tổng số các xâu có thể tạo thành xâu bị lỗi là
$cnt_1$ ∗ $cnt_2$ ∗ . . . ∗ $cnt_k$.
Code c++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
cin.tie(nullptr)->sync_with_stdio(false);
string a;
cin >> a;
long long res=1,d=0;
a+=" ";
for (int i=1;i<a.size();i++)
{
if (a[i]==a[i-1]) d++;
else {d++;res=(res*d)%1000000007;d=0;}
}
cout<<res;
}
Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin
9
261
6
không ngờ bài này phải dùng con trỏ nhưng dù sao cũng cảm ơn anh nhá
108
1362
43
:)))