Тема 25. Обработка целочисленной информации

25.05 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 41#30240Максимум баллов за задание: 1

Найдите все натуральные числа, N, принадлежащие отрезку [12000000; 1000000000], которые можно представить в виде N  = 3m × 7n  , где m – нечётное число, n — число, кратное 5. В ответе запишите все найденные числа в порядке убывания, а справа от каждого числа — сумму всех его нетривиальных делителей.

Показать ответ и решение
def count_del(x):
    sm = []
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            sm += [i]
            if i != x // i:
                sm += [x//i]
    return sum(sm)
ans = []
for i in range(1, 100, 2):
    for j in range(0, 100, 5):
        n = 3**i*7**j
        if 12000000 <= n <= 1000000000:
            ans.append([n, count_del(n)])
ans = sorted(ans, reverse = True)
for i in range(len(ans)):
    print(*ans[i])

Ответ: 847425747 470792080 330812181 248094410 129140163 64570080 36756909 27557330 14348907 7174452

Ошибка.
Попробуйте повторить позже

Задача 42#37827Максимум баллов за задание: 1

Тимофей любит число 7  и все числа кратные 999983.

Вопрос — где первое вхождение кратного K (K = 999983)  в последовательности 7,77,777,...  ? Если последовательность не содержит кратных 999983  , в ответе вместо этого запишите − 1  .

Показать ответ и решение

Решение на Python

k = 999983
ans = -1
s = 7
for i in range(10 ** 6):
    if s % k == 0:
        ans = i + 1
        break
    s = s * 10 + 7
print(ans)

Ответ: 999982

Ошибка.
Попробуйте повторить позже

Задача 43#51951Максимум баллов за задание: 1

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [28585; 28800], количество чисел, в которых цифра, стоящая в разряде десятков, равна 8.

В ответ запишите количество таких чисел.

Показать ответ и решение
counter = 0
for i in range(28585, 28800 + 1):
    if (i // 10) % 10 == 8:
        counter += 1
print(counter)

Ответ: 25

Ошибка.
Попробуйте повторить позже

Задача 44#54975Максимум баллов за задание: 1

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [467693; 467740], числа, кратные сумме цифр самого числа. Каждое найденное число запишите через пробел.

Показать ответ и решение
for x in range(467693, 467740 + 1):
    s = x
    sm = 0
    while s > 0:  # Цикл, в котором считается сумма цифр числа
        sm += s % 10
        s = s // 10
    if x % sm == 0:
        print(x, end=" ")

Ответ: 467709 467721 467740

Ошибка.
Попробуйте повторить позже

Задача 45#54979Максимум баллов за задание: 1

Среди целых чисел, принадлежащих числовому отрезку [2031; 14312], найдите числа, которые не содержат цифру 2, если записать их в системе счисления с основанием 11. Ответом будет максимум среди найденных чисел.

Показать ответ и решение
def count_11(number): # функция, которая проверяет есть ли 2 в 11-ричной записи числа
    x = number
    while x > 0:
        if x % 11 == 2:
            return False
        x //= 11
    return True


for i in reversed(range(2031, 14313)):
    if count_11(i):
        print(i)
        break

Ответ: 14312

Ошибка.
Попробуйте повторить позже

Задача 46#56884Максимум баллов за задание: 1

Назовем натуральное число подходящим, если его сумма цифр, в сравнении с суммой цифр других натуральных чисел, минимальна.

Например, среди чисел 50, 5, 23, 32, сумма цифр которых равна 5, подходящим будет являться число 5.

Найдите количество подходящих чисел, кратных 3  , на отрезке [1;6999999999]

Показать ответ и решение

Для начала поймем, какие числа являются подходящими и кратными 3  :

def num(x):
    summ = 0
    while x > 0:
        summ += x % 10
        x //= 10
    return summ
a = set()
for i in range(1, 6999999999+1):
    t = num(i)
    if not t in a:
        if i % 3 == 0:
            print(i, t)
        a.add(t)

Данный код будет печатать числа 3,6,9  , а затем те числа, которые начинаются с 3  , 6  или 9  , а остальная часть которых будет целиком состоять из 9  .

Предлагается написать код-генератор для подобных чисел:

ans = [3, 6, 9]
nums = ’369’
x = ’9’
for i in range(9):
    for digit in nums:
        result = int(digit + x)
        if result <= 6999999999:
            ans.append(result)
    x += ’9’
print(len(ans))

Ответ: 29

Ошибка.
Попробуйте повторить позже

Задача 47#57291Максимум баллов за задание: 1

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [60312;62831]  , количество чисел, в которых сумма цифр делится на 3 без остатка.

В ответ запишите количество таких чисел.

Показать ответ и решение
def sum_of_digits(x):#функция,возвращающая сумму цифр в числе
    s = 0
    while x > 0:
        s += x % 10
        x//= 10
    return s
count = 0
for x in range(60312,62831+1):
    if sum_of_digits(x) % 3 == 0:
        count += 1
print(count)

Ответ: 840

Ошибка.
Попробуйте повторить позже

Задача 48#60954Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [54704; 589357], которые делятся на 3 и обязательно имеют в своей записи цифры 1 и 9.

Найдите количество таких чисел и минимальное из них.

Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Показать ответ и решение
counter=0
minim=100000000000
for i in range(54704, 589357 + 1):
    if i%3==0:
        i = str(i)
        if i.count(’1’)>0 and i.count(’9’)>0:
            counter+=1
            minim=min(minim,int(i))
print(counter, minim)

Ответ: 34316 54819

Ошибка.
Попробуйте повторить позже

Задача 49#60958Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [52742; 78287], которые делятся на 5 и обязательно имеют в своей записи цифры 4 и 7.

Найдите количество таких чисел и максимальное из них.

Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Показать ответ и решение

Решение.

f=open(’17.txt’)
counter=0
maxim=-100000000000
for i in range(52742, 78287 + 1):
    if i%5==0:
        i = str(i)
        if i.count(’4’)>0 and i.count(’7’)>0:
            counter+=1
            maxim=max(maxim,int(i))
print(counter, maxim)

Ответ: 677 78245

Ошибка.
Попробуйте повторить позже

Задача 50#60967Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [22578; 124287210], которые делятся на 2023.

Найдите количество таких чисел.

Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Показать ответ и решение
ans = 0
for i in range(22578, 124287210 + 1):
    if i % 2023 == 0:
        ans += 1
print(ans)

Ответ: 61426

Ошибка.
Попробуйте повторить позже

Задача 51#60968Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [34740; 43879], которые удовлетворяют следующим условиям:

— остаток от деления на 8 равен 6;

— остаток от деления на 3 не равен 0.

Найдите количество таких чисел и их сумму.

Показать ответ и решение
counter = 0
summa = 0
for i in range(34740, 43879 + 1):
    if i % 8 == 6 and (i % 3 == 2 or i % 3 == 1):
        counter += 1
        summa += i
print(counter, summa)

 

Ответ: 762 29951172

Ошибка.
Попробуйте повторить позже

Задача 52#60969Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [34740; 43879], которые удовлетворяют следующим условиям:

— остаток от деления на 8 равен 6;

— остаток от деления на 3 не равен 0.

Найдите количество таких чисел и их сумму.

Показать ответ и решение
counter = 0
summa = 0
for i in range(34740, 43879 + 1):
    if i % 8 == 6 and (i % 3 == 2 or i % 3 == 1):
        counter += 1
        summa += i
print(counter, summa)

 

Ответ: 762 29951172

Ошибка.
Попробуйте повторить позже

Задача 53#60971Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [3891; 8540], которые удовлетворяют следующим условиям:

— остаток от деления на 5 равен 3;

— остаток от деления на 4 не равен 0.

Найдите количество таких чисел и их сумму.

Показать ответ и решение
counter = 0
summa = 0
for i in range(3891, 8540 + 1):
    if i % 5 == 3 and (i % 4 == 1 or i % 4 == 2 or i % 4 == 3):
        counter += 1
        summa += i
print(counter, summa)

 

Ответ: 698 4337839

Ошибка.
Попробуйте повторить позже

Задача 54#60975Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [5874; 8912], которые удовлетворяют следующим условиям:

— запись в двоичной и четверичной системах счисления заканчивается одинаковой цифрой;

— кратны, по крайней мере, одному из чисел: 13 или 17.

Найдите количество таких чисел и минимальное из них.

Показать ответ и решение
counter, minim = 0, 10 ** 10
for i in range(5874, 8912 + 1):
    if i % 2 == i % 4 and (i % 13 == 0 or i % 17 == 0):
        counter += 1
        minim = min(minim, i)
print(counter, minim)

Ответ: 200 5876

Ошибка.
Попробуйте повторить позже

Задача 55#60977Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [51354; 82394], которые удовлетворяют следующим условиям:

— цифра в разряде десятков не превышает 4  ;

— цифра в разряде сотен принадлежит отрезку [2  ; 5  ].

Найдите количество таких чисел и минимальное из них.

Показать ответ и решение
counter = 0
minim = 100000000000
for s in range(51354, 82394 + 1):
    k = str(s)
    if int(k[-2]) <= 4 and int(k[-3]) in [2, 3, 4, 5]:
        counter += 1
        minim = min(minim, s)
print(counter, minim)

Ответ: 6200 51400

Ошибка.
Попробуйте повторить позже

Задача 56#60993Максимум баллов за задание: 1

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [21100; 28502], числа, кратные числам 71 и 17 и не кратные числам 13 и 31 одновременно. Найденные числа запишите в порядке возрастания через пробел.

Показать ответ и решение
n = set()
for x in range(21100, 28503):
    if x % 17 == 0 and x % 71 == 0 and x % 13 != 0 and x % 31 != 0:
        n.add(x)
print(sorted(n))

Ответ: 21726 22933 24140 25347 26554 27761

Ошибка.
Попробуйте повторить позже

Задача 57#60995Максимум баллов за задание: 1

Среди целых чисел, принадлежащих числовому отрезку [1000; 15000], найдите числа, которые не содержат цифру 5, если записать их в системе счисления с основанием 14. Ответом будет максимальное среди найденных чисел в десятичной системе счисления.

Показать ответ и решение
def f(n): # функция, которая проверяет есть ли 5 в 14-ричной записи числа
    a = x
    while a > 0:
        if a % 14 == 5:
            return False
        a = a // 14
    return True

for x in range(1000, 15001):
    if f(x):
        print(x)

Ответ: 13719

Ошибка.
Попробуйте повторить позже

Задача 58#60999Максимум баллов за задание: 1

На отрезке [100000; 300000] найдите минимальное и максимальное число, которое делится на 13 и не делится на 71. В ответе запишите два этих числа в порядке возрастания через пробел.

Показать ответ и решение
# Ищем мин. число
for i in range(100000, 300001):
    if i % 13 == 0 and i % 71 != 0:
        print(i)
        break

# Ищем макс. число
for i in range(300000, 99999, -1):
    if i % 13 == 0 and i % 71 != 0:
        print(i)
        break

Ответ: 100009 299988

Ошибка.
Попробуйте повторить позже

Задача 59#61001Максимум баллов за задание: 1

Среди целых чисел, принадлежащих числовому отрезку [1686; 13276], найдите числа, все цифры которых нечетные. Ответом будет сумма цифр найденных чисел.

Показать ответ и решение
sm = 0 # Общая сумма цифр
for i in range(1686, 13277):
    a = i
    nsm = 0 # Сумма цифр числа
    f = 0 # Флаг, указывающий на наличие чётных цифр
    # Проверяем каждый разряд числа
    while a > 0:
        if (a % 10) % 2 == 1:
            nsm += a % 10
        else: # если нашлась чётная цифра в числе
            f = 1
            break # то сбрасываем цикл, такое число нам не подходит
        a = a // 10
    # Если чётных цифр не нашлось — прибавляем сумму
    if f == 0:
        sm += nsm
print(sm)

Ответ: 13950

Ошибка.
Попробуйте повторить позже

Задача 60#61019Максимум баллов за задание: 1

Рассматривается множество целых чисел, принадлежащих числовому отрезку [94252; 144568], которые удовлетворяют следующим условиям:

— цифра в разряде десятков не превышает 4  ;

— цифра в разряде сотен принадлежит отрезку [2  ; 5  ].

Найдите количество таких чисел и минимальное из них.

Показать ответ и решение
counter = 0
minim = 100000000000
for s in range(94252, 144568 + 1):
    k = str(s)
    if int(k[-2]) <= 4 and int(k[-3]) in [2, 3, 4, 5]:
        counter += 1
        minim = min(minim, s)
print(counter, minim)

Ответ: 10150 94300
Рулетка
Вы можете получить скидку в рулетке!