img img img img img img img img img img img img img img img img img img img img img img
Логотип Человек живет, пока думает.
Решайте задачи и живите долго!
Для участия в проекте необходимо
и достаточно зарегистрироваться!
Rss Регистрация || Вход
Вход
Diofant.ru
Картинка
Отражение Отражение Картинка Картинка
отражение
Лента событий: badfomka решил задачу "Календарь будущего" (Информатика):
+ 4

Задача 421. Бесконечная строка

постоянный адрес задачи: http://www.diofant.ru/problem/1925/
показать код для вставки на свой сайт >>
Задачу решили: 3
всего попыток: 3
поделиться задачей:

Задача опубликована: 06.10.11 08:00
Прислал: admin img
Источник: Проект "Эйлер" (http://projecteuler.net)
Вес: 1
сложность: 2 img
баллы: 100
Темы: алгебраimg

Построим последовательность случайных чисел sn при помощи генератора Блюм-Блюма-Шуба:
s0=14025256
sn+1=sn2 mod 20300713,
и запишем полученные числа s0 s1 s2… подряд в одну бесконечную строку w: w=14025256741014958470038053646…


Для натурального числа k выберем все подстроки строки w, для которых сумма цифр равна k и обозначим через p(k) положение самой левой цифры в этих подстроках. Если не найдется ни одной подстроки с суммой цифр, равной k, будем считать, что p(k)=0.

Например,
Сумму цифр k=7 имеют подстроки 1402, 025, 25, 52, 25, 7 …, начинающиеся, соответственно, с 1, 3, 4, 5, 6, 9 … позиции. Поэтому p(7)=1.
Сумму цифр k=11 имеют подстроки 4025, 56, 74, 47, 470, 4700, 0038 …, начинающиеся, соответственно, со 2, 7, 9, 18, 18, 18, 20 … позиции. Поэтому p(11)=2.
Сумму цифр k=20 имеют подстроки 025256, 25256, 2567, 101495 …, начинающиеся, соответственно, со 3, 4, 6, 11 … позиции. Поэтому p(20)=3.

Можно показать, что среди значений p(k) для 0<k≤103 найдется 614 нечетных и 386 четных.
А сколько нечетных значений p(k) найдется для  0<k≤2•1015?

 
Пожалуйста, не пишите нам, что Вы не можете решить задачу.
Если Вы не можете ее решить, значит Вы не можете ее решить :-)

Обсуждение Правила >>

Внимание! В обсуждении задачи запрещено публиковать ответы и давать подсказки.
 
Внимание! Если Вы увидите ошибку на нашем сайте, выделите её и нажмите Ctrl+Enter.