Строка "abc" может появляться в первой позиции, что делает строку похожей на это:
abcXXXXXXXXX
... где X может быть любой буквой или цифрой. (26 + 10) ^ 9 таких строк.
Может появиться во второй позиции, что делает строку похожей на:
XabcXXXXXXXX
И есть (26 + 10) ^ 9 таких строк.
Поскольку «abc» может появляться в любом месте с первой по десятую позиции, таких строк может быть 10 * 36 ^ 9.
Но это переоценивает, потому что он считает (например) строки, как это дважды:
abcXXXabcXXX
Итак, нам нужно посчитать все строки, подобные этой, и вычесть их из нашей общей суммы.
Поскольку в этом шаблоне 6 X, есть 36 ^ 6 строк, соответствующих этому шаблону.
Я получаю 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28 таких шаблонов. (Если первый «abc» находится в начале, второй может быть в любом из 7 мест. Если первый «abc» находится на втором месте, второй может быть в любом из 6 мест. И т. Д.)
Итак, вычтите 28 * 36 ^ 6.
... но это вычитает слишком много, потому что он вычитал из строк три раза, а не один раз:
abcXabcXabcX
Итак, мы должны добавить обратно в строки, как это, дважды. Я получаю 4 + 3 + 2 + 1 + 3 + 2 + 1 + 2 + 1 + 1 = 20 из этих паттернов, что означает, что мы должны добавить обратно в 2 * 20 * (36 ^ 3).
Но эта математика насчитала эту строку четыре раза:
abcabcabcabc
... поэтому мы должны вычесть 3.
Окончательный ответ:
10*36^9 - 28*36^6 + 2*20*(36^3) - 3
Разделите это на 36 ^ 12, чтобы получить свою вероятность.
См. Также Принцип включения-исключения . И дайте мне знать, если я сделал ошибку в моем подсчете.