Задание 25.
Обработка целочисленной информации.
|
Задание №55821 Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну произвольную цифру; — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих 𝟏𝟎𝟖, найдите все числа, соответствующие маске 12??36*1, делящиеся на 273 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел на 273. |
|
# берем из библиотеки fnmatch все функции from fnmatch import * # берем диапазон от 273 до 10**8+1 с шагом 273 for i in range(273, 10**8+1, 273): if fnmatch(str(i), '12??36*1'): print(i, i//273) |
|
Answer: 1271361 4657 12633621 46277 12663651 46387 12693681 46497 |
|
Задание №13440 kompege Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну произвольную цифру; — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих 𝟏𝟎𝟗, найдите все числа, соответствующие маске 85*16?4, делящиеся на 2658 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие результаты деления этих чисел на 2658. |
|
from fnmatch import * for i in range(2658, 10**9+1, 2658): if fnmatch(str(i), '85*16?4'): print(i, i//2658) |
|
Answer: 85781634 32273 850461654 319963 851471694 320343 852521604 320738 853531644 321118 854541684 321498 856601634 322273 857611674 322653 859671624 323428 |
|
Задание №60267 Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну произвольную цифру; — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих 𝟏𝟎𝟏𝟎, найдите все числа, соответствующие маске 1?2157*4, делящиеся на 2024 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел на 2024. |
|
from fnmatch import * for i in range(2024, 10**10+1, 2024): if fnmatch(str(i), '1?2157*4'): print(i, i//2024) |
|
Answer: |
142157664 70236 1021575544 504731 1121571264 554136 1221577104 603546 1321572824 652951 1421578664 702361 1521574384 751766 1621570104 801171 1721575944 850581 1821571664 899986 1921577504 949396 |
Задание №11814 (Л. Шастин)
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «#» означает последовательность из ровно трёх произвольных цифр.
|
from fnmatch import * for i in range(1777, 10**10+1, 1777): s = str(i) # так как # - это ровно три цифры, а ? – одна цифра, то маска 21#68?79 будет иметь длину строки - 10 if len(s) == 10 and fnmatch(s, '21*68?79'): print(i, i//1777) |
Например, маске 123#4?5 соответствуют числа 123333405 и 123001405.
Среди натуральных чисел, не превышающих 𝟏𝟎𝟏𝟎 , найдите все числа, соответствующие маске 21#68?79, делящиеся на 1777 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 1777.
|
Answer: 2110768579 1187827 2135468879 1201727 2137068179 1202627 2161768479 1216527 2186468779 1230427 2188068079 1231327 |
|
Задание №8481 (В. Рыбальченко) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: - символ «?» означает ровно одну произвольную цифру; - символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 13*4?5 соответствуют числа 13405 и 1300425. Найдите все натуральные числа меньшие 𝟏𝟎𝟖, которые кратны 237, соответствуют маске «81?2*80», но не соответствуют маске «*9*». В ответ в первом столбике перечислите все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 237. |
|
from fnmatch import * for i in range(237, 10**8+1, 237): if fnmatch(str(i), '81?2*80') and not fnmatch(str(i), '*9*'): print(i, i//237) |
|
Answer: 815280 3440 8162280 34440 81324180 343140 81727080 344840 81821880 345240 |
|
|
|
Задание №71914 (сайт К. Полякова) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну произвольную цифру; — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300425. Среди натуральных чисел, меньших 109, найдите числа, удовлетворяющих маске 7*15?3*7 и делящиеся на 2267, у которых сумма цифр – простое число. Запишите в ответе найденные числа в порядке возрастания, справа от каждого числа запишите частное от его деления на 2267. |
|
def f(n): # проверка на простое число d = 0 for i in range(2, int(n**0.5)+1): if n%i == 0: d += 1 if d == 0: return 1 from fnmatch import * for i in range(2267, 10**9+1, 2267): if fnmatch(str(i), '7*15?3*7'): s = sum(map(int, str(i))) if f(s): print(i, i//2267) |
|
Answer: 71503447 31541 72115537 31811 721543027 318281 748815037 330311 752215537 331811 781573187 344761 |
Задание №27422
|
for i in range(174457, 174505+1): k = 0 s = [] for j in range(2, i): if i % j == 0: k += 1 s.append(j) if k > 2: break if k == 2: |
|
Answer: 3 58153 7 24923 59 2957 13 13421 149 1171 5 34897 211 827 2 87251 |
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в два соседних столбца на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке также должны следовать в порядке возрастания.
Например, в диапазоне [5; 9] ровно два различных натуральных делителя имеют числа 6 и 8, поэтому для этого диапазона вывод на экране должна содержать следующие значения:
2 3
2 4
Задание №27851
|
for i in range(210235, 210300+1): k = 0 s = [] for j in range(2, i): if i % j == 0: k += 1 s.append(j) if k > 4: break if k == 4: |
|
Answer: 2 4 52561 105122 2 4 52567 105134 2 4 52571 105142 |
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [210 235; 210 300], числа, имеющие ровно четыре различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти четыре делителя в четыре соседних столбца на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [10; 16] ровно четыре различных
натуральных делителя имеет число 12, поэтому для этого диапазона вывод на
экране должна содержать следующие значения: 2 3 4 6
|
Задание №27855 Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [95632; 95700], числа, имеющие ровно шесть различных чётных натуральных делителей (при этом количество нечётных делителей может быть любым). Для каждого найденного числа запишите эти шесть делителей в шесть соседних столбцов на экране с новой строки. Делители в строке должны следовать в порядке возрастания. Например, в диапазоне [2; 48] ровно шесть чётных различных натуральных делителей имеют числа 24, 36 и 40, поэтому для этого диапазона вывод на экране должна содержать следующие значения: 2 4 6 8 12 24 2 4 6 12 18 36 2 4 8 10 20 40 |
|
for i in range(95632, 95700+1): k = 0 s = [] for j in range(2, i+1): if i % j == 0 and j % 2 == 0: k += 1 s.append(j) if k > 6: break if k == 6: |
|
Answer: 2 10 50 3826 19130 95650 2 26 338 566 7358 95654 2 4 8 23918 47836 95672 |
Задание №33104
Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Например, у числа 6 есть два нетривиальных делителя: 2 и 3. Найдите все натуральные числа, принадлежащие отрезку [289123456; 389123456] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе его наибольший нетривиальный делитель. Ответы расположите в порядке возрастания. Например, в диапазоне [5; 16] ровно три различных натуральных делителя имеет число 16, поэтому для этого диапазона вывод на экране должна содержать следующие значения:
|
for i in range(int(289123456**0.25), int(389123456**0.25)): for j in range(2, int(i**0.5)+1): if i % j == 0: break else: print(i**4, i**3) |
16 8
|
Answer: 294499921 2248091 352275361 2571353 373301041 2685619 |
https://www.youtube.com/watch?v=l7tIgOt501U&t
Задание №47022
|
k = 0 m = 300000001 while True: d = [] for i in range(int(m**0.5)+1, 1, -1): if m % i == 0: d.append(i) d.append(m/i) if len(d) >= 5: print(int(sorted(d)[-5])) k += 1 if k == 5: break m += 1 |
Пусть M(N) — пятый по величине делитель натурального числа N без учёта самого числа и единицы. Например, M(1000) = 100.
Если у числа N меньше 5 различных делителей, не считая единицы и самого числа, считаем, что M(N) = 0. Найдите 5 наименьших натуральных чисел, превышающих 300 000 000, для которых M(N) > 0. В ответе запишите найденные значения M(N) в порядке возрастания соответствующих им чисел N.
|
Answer: 17 1119403 151 16666667 27272728 |
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.