10808. Одиничний біт
Відправити розв'язок
Бали:
100
Time limit:
1.5s
Memory limit:
500M
Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python
Вам надано двійковий рядок довжиною \(n\).
Ваше завдання полягає в тому, щоб обчислити для кожного \(k\) між \(1…n−1\) кількість способів, якими ми можемо вибрати дві позиції \(i\) та \(j\) так, щоб \(i−j=k\) і в обох позиціях є одиничний біт.
Обмеження
- \(2≤n≤2⋅10^5\)
Формат вхідних даних
Єдиний вхідний рядок містить рядок, який складається лише з символів 0 та 1.
Формат вихідних даних
Для кожної відстані \(k\) між \(1…n−1\) виведіть кількість способів, якими ми можемо вибрати дві таких позиції.
Приклад вхідних даних
1001011010
Приклад вихідних даних
1 2 3 0 2 1 0 1 0
Коментарі