Назовём маской числа последовательность цифр, в которой символ «?» означает ровно одну произвольную цифру, а символ «*» — любую последовательность цифр произвольной длины, включая пустую. Например…
- 1
При пустой последовательности вместо «*» получаем число $123467$. Оно не делится на 19.
- 2
При одной цифре вместо «*» число имеет вид $1234067+100x$, где $0\leq x\leq9$. По модулю 19: $1234067\equiv17$, $100\equiv5$, поэтому $17+5x\equiv0\pmod{19}$. Отсюда $x=8$, получаем число $1234867$.
Ещё 2 шага — в полном решении
Напишите программу, которая перебирает целые числа, большие 1 481 011, в порядке возрастания и ищет среди них представленные в виде произведения ровно двух простых множителей, не обязательно…
- 1
Перебираем простые числа и оставляем только те, в десятичной записи которых ровно одна цифра 7.
- 2
Проверяем произведения пар подходящих простых множителей, начиная с чисел, больших 1 481 011.$$1117 \cdot 1327 = 1482259$$
Ещё 1 шаг — в полном решении
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит…
- 1
Сначала просматриваем все элементы массива и подсчитываем те, которые не меньше 1500 и являются чётными.$$a[i] \ge 1500 \land a[i] \bmod 2 = 0$$
- 2
После завершения подсчёта повторно просматриваем массив. Каждый подходящий элемент заменяем найденным количеством $k$.
Ещё 1 шаг — в полном решении
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: символ «?» означает ровно одну произвольную цифру; символ «*» означает любую последовательность…
- 1
Число с маской 1*23?9 имеет вид $A \cdot 10000 + 2309 + 10d$, где $d$ — последняя неизвестная цифра, а $A$ начинается с цифры 1.
- 2
Так как число не превышает $10^8$, длина последовательности вместо «*» может быть от 0 до 3 цифр. Для каждого варианта перебираем $d$ от 0 до 9 и проверяем делимость на 2023.
Ещё 3 шага — в полном решении
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: символ «?» означает ровно одну произвольную цифру; символ «*» означает любую последовательность…
- 1
Так как число не превышает $10^{10}$, в маске 89*6?7?9? символ «*» может задавать от нуля до двух цифр.
- 2
Перебираем все числа, кратные 9874, в диапазоне от минимального числа, соответствующего маске, до $10^{10}$.
Ещё 1 шаг — в полном решении
Цепочки символов (строки) создаются по следующему правилу. Первая строка состоит из одного символа — цифры «1». Каждая из последующих цепочек создаётся так: в очередную строку дважды записывается…
- 1
Обозначим через $E_i$ количество чётных цифр в $i$-й строке. При создании новой строки предыдущая строка записывается дважды, поэтому её вклад удваивается.
- 2
Приписанная цифра увеличивает количество чётных цифр на единицу только для чётных номеров строк.
Ещё 1 шаг — в полном решении
По каналу связи передаётся последовательность целых неотрицательных чисел — показания прибора, полученные с интервалом в 1 мин в течение $T$ минут. Определите два переданных числа, чтобы между…
- 1
Если два показания имеют индексы $j$ и $i$, то условие задачи имеет вид $i-j \geq K$. При фиксированном $i$ выгодно выбрать среди допустимых предыдущих элементов максимальный.$$j \leq i-K$$
- 2
При последовательном чтении данных поддерживаем максимум всех элементов с индексами от $0$ до $i-K$. После обработки очередного элемента обновляем этот максимум и рассматриваем сумму с текущим значением.$$S_i=a_i+\max_{0\leq j\leq i-K}a_j$$
Ещё 2 шага — в полном решении
На вход алгоритма подаётся натуральное число $N$. Алгоритм строит по нему новое число $R$ следующим образом. Строится двоичная запись числа $N$. Если число $N$ чётное, то к этой записи справа и…
- 1
Проверим числа, близкие к $113$, в двоичной системе счисления. Для результата, полученного из нечётного $N$, двоичная запись должна иметь вид $1b00$.
- 2
Число $108$ представляется в виде $1101100_2$. Отделяем первую единицу и два последних нуля: получаем $b=1011_2=11_{10}$.
Ещё 2 шага — в полном решении
Определите, при каком наибольшем введённом значении переменной $s$ программа выведет число 64. Для Вашего удобства программа представлена на четырёх языках программирования. Паскаль: ```pascal var…
- 1
Начальное значение переменной $n$ равно 1, и на каждой итерации цикла оно увеличивается в 2 раза.$$n = 2^k$$
- 2
Чтобы программа вывела 64, цикл должен выполниться 6 раз.$$2^k = 64 = 2^6 \Rightarrow k = 6$$
Ещё 3 шага — в полном решении
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 9. Значения элементов равны 9, 6, 4, 7, 3, 2, 1, 5, 0, 8 соответственно. Определите значение переменной $c$ после…
- 1
Изначально массив имеет вид $[9,6,4,7,3,2,1,5,0,8]$, поэтому $A[9]=8$ и $c=0$.
- 2
При $i=0$: $9<8$ — неверно, обмена нет. При $i=1$: $6<8$ — верно, $c=1$, после обмена $A[9]=6$.
Ещё 4 шага — в полном решении
Пусть $R$ — сумма различных натуральных делителей целого числа, не считая единицы и самого числа. Напишите программу, которая перебирает целые числа, большие $500\,000$, в порядке возрастания и ищет…
- 1
Перебираем числа $n$, начиная с $500001$, в порядке возрастания.$$n=500001,500002,\ldots$$
- 2
Для каждого $n$ перебираем делители $d$ от 2 до $\lfloor\sqrt n\rfloor$. При обнаружении делителя добавляем к сумме $d$ и парный делитель $n/d$, если они различны и не равны самому числу.$$R(n)=\sum_{d\mid n,\ 1<d<n}d$$
Ещё 1 шаг — в полном решении
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит…
- 1
Используем две обработки массива: сначала находим минимальный элемент, делящийся на 3, затем изменяем элементы, делящиеся на 3, и выводим результат.
- 2
Например, на Python фрагмент программы может выглядеть так: j = 10001 for i in range(0, n): if a[i] % 3 == 0 and a[i] < j: j = a[i] for i in range(0, n): if a[i] % 3 == 0: a[i] += j print(a[i])
Ещё 1 шаг — в полном решении
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит…
- 1
Используем переменную j для подсчёта элементов, которые меньше 100 и не кратны 5.$$a[i] < 100 \text{ и } a[i] \bmod 5 \ne 0$$
- 2
После подсчёта повторно просматриваем массив. Каждый подходящий элемент заменяем значением j.
Ещё 1 шаг — в полном решении
На вход алгоритма подаётся натуральное число $N$. Алгоритм строит по нему новое число $R$. Сначала строится двоичная запись числа $N$. Если сумма цифр в двоичной записи чётная, к записи справа…
- 1
Для чисел от $1$ до $15$ двоичная запись содержит не более четырёх разрядов, поэтому после обработки результат не превышает $22$ и не может быть больше 50.
- 2
Рассмотрим следующие числа. Для $N=16$: $16_{10}=10000_2$, сумма цифр равна 1, поэтому получаем $110001_2=49_{10}$.$$10000_2 \to 100001_2 \to 110001_2=49_{10}$$
Ещё 3 шага — в полном решении
Запишите число, которое будет напечатано в результате выполнения программы. Во всех представленных вариантах программы используется целочисленное деление.
- 1
В начале работы программы $s=250$, $n=1$. На каждой итерации выполняется целочисленное деление $s$ на $3$ и умножение $n$ на $2$.$$s \leftarrow \lfloor s/3 \rfloor,\quad n \leftarrow 2n$$
- 2
Последовательно вычисляем значения переменной $s$:$$250 \to 83 \to 27 \to 9 \to 3 \to 1 \to 0$$
Ещё 1 шаг — в полном решении
Пусть $M$ — сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то значение $M$ считается равным нулю. Напишите…
- 1
Последовательно перебираем целые числа, большие $5\,700\,000$, и для каждого определяем минимальный и максимальный простые делители, не считая самого числа.
- 2
Для каждого числа вычисляем $M$ как сумму найденных делителей и проверяем условия $M > 70\,000$ и $M = k^2$ для некоторого натурального $k$.$$M=p_{\min}+p_{\max}=k^2$$
Ещё 1 шаг — в полном решении
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: символ «?» означает ровно одну произвольную цифру; символ «*» означает любую последовательность…
- 1
Так как число начинается с цифры 3 и не превышает $10^8$, длина последовательности, задаваемой символом «*», может быть от 0 до 2 цифр.
- 2
Перебираем цифры вместо «?» и последовательности цифр вместо «*», проверяя соответствие маске и делимость на 3023.
Ещё 1 шаг — в полном решении
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 9. Значения элементов равны 9, 8, 4, 7, 3, 2, 1, 5, 0, 6 соответственно, то есть $A[0]=9$, $A[1]=8$ и т. д…
- 1
Изначально $A[9]=6$, а $c=0$. Проверяем элементы с индексами от 0 до 8.
- 2
При $i=0$ и $i=1$ элементы 9 и 8 не меньше 6, поэтому обмена нет.
Ещё 4 шага — в полном решении
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 9. Значения элементов равны 6, 8, 4, 3, 7, 9, 5, 2, 0, 1 соответственно, то есть $A[0]=6$, $A[1]=8$ и так далее…
- 1
Изначально $A[0]=6$ и $c=0$. При $i=1$ значение $A[1]=8$, поэтому условие не выполняется.
- 2
При $i=2$ имеем $A[2]=4<6$. Увеличиваем $c$ до 1 и меняем местами $A[2]$ и $A[0]$. Теперь $A[0]=4$.$$c=1$$
Ещё 4 шага — в полном решении
Пусть $M$ — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение $M$ равным нулю. Напишите…
- 1
Для каждого целого числа, начиная с $452022$, перебираем возможные делители до квадратного корня числа.$$1 < d \leq \sqrt{n}$$
- 2
Для составного числа минимальным нетривиальным делителем является первый найденный делитель $d$, а максимальным — парный делитель $n / d$. Поэтому $M = d + n/d$.
Ещё 2 шага — в полном решении