Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
1) символ «?» означает ровно одну произвольную цифру;
2) символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
3) символ «&» означает любую последовательность нечётных цифр произвольной длины; в том числе «&» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске &123*321?, делящиеся на 2004 без остатка. В ответе запишите первые пять чисел в порядке возрастания, и через пробел – соответствующие им результаты деления этих чисел на 2004.
from itertools import product def simple(x):return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) digits = ’0123456789’ odd_digits = ’13579’ res = [] for i in range(4): for digit_1 in product(odd_digits,repeat = i): for j in range(4): for digit_2 in product(digits,repeat = j): for digit_3 in product(digits,repeat = 1): res += [int(’’.join(digit_1) + ’123’ + ’’.join(digit_2) + ’321’ + ’’.join(digit_3))] for x in sorted(set(res)): if x <= 10**10 and x % 2004 == 0: print(x,x//2004)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
1) символ «?» означает ровно одну произвольную цифру;
2) символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 3*3?12, делящиеся на 3952 без остатка, у которых также сумма цифр числа является нечётной. В ответе запишите первые пять чисел в порядке возрастания, и через пробел – соответствующие им результаты деления этих чисел на 3952.
Способ решения 1: from fnmatch import fnmatch count = 0 for x in range(35568,10**9+1,3952): if fnmatch(str(x),’3*3?12’) and sum(map(int,str(x))) % 2 != 0: count += 1 print(x,x//3952) if count > 4: break Способ решения 2: from itertools import product digits = ’0123456789’ res = [] for i in range(5): for digit_1 in product(digits,repeat = i): for digit_2 in product(digits,repeat = 1): res += [int(’3’+’’.join(digit_1) + ’3’ + ’’.join(digit_2) + ’12’)] for x in sorted(set(res)): if x <= 10**9 and x % 3952 == 0 and sum(map(int,str(x))) % 2 != 0: print(x,x//3952)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
1) символ «?» означает ровно одну произвольную цифру;
2) символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 2*56??, делящиеся на 2048 без остатка, у которых более 5 делителей, соответствующих маске 1*4. В ответе запишите все найденные числа в порядке возрастания, и через пробел – соответствующие им результаты деления этих чисел на 2048.
Способ решения 1: from fnmatch import fnmatch def divs(x):#функция поиска делителей для определенного числа d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) for x in range(4096,10**7+1,2048): if fnmatch(str(x),’2*56??’):#если число удовлетворяет маске числа d = [i for i in divs(x) if fnmatch(str(i),’1*4’)]#делаем список,в котором будут делители, #удовлетворяющие маске делителей. if len(d) > 5: print(x,x//2048) Способ решения 2: from itertools import product def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) digits = ’0123456789’ res = []#список, в котором будут числа удовлетворяющие маске числа need_div = []#список, в котором будут числа удовлетворяющие маске делителей #формирование чисел по определенной маске чисел for i in range(3): for digit_1 in product(digits,repeat = i): for digit_2 in product(digits,repeat = 1): for digit_3 in product(digits,repeat = 1): res += [int(’2’ + ’’.join(digit_1) + ’56’ + ’’.join(digit_2) + ’’.join(digit_3))] #формирование чисел по определенной маске делителей for i in range(6): for digit_1 in product(digits,repeat = i): need_div += [int(’1’+’’.join(digit_1) + ’4’)] for x in sorted(set(res)):#проход по всевозможным получившимся числам if x <= 10**7 and x % 2048 == 0: d = [i for i in divs(x) if i in need_div]#список, в котором будут делители числа, # удовлетворяющие маске делителей if len(d) > 5:#если таких делителей больше 5 print(x,x//2048)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
1) символ «?» означает ровно одну произвольную цифру;
2) символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 1*3577?0, делящиеся на 1975 без остатка. В ответе запишите все найденные числа в порядке возрастания, и через пробел – соответствующие им результаты деления этих чисел на 1975.
Способ решения 1: from fnmatch import fnmatch for x in range(1358800,10**9+1,1975): if fnmatch(str(x),’1*3577?0’): print(x,x//1975) Способ решения 2: ’’’ Идея решения заключается в том, чтобы по частям собирать число, удовлетворяющее маске и затем проверять его на кратность. Такое решение оптимальнее по времени поскольку мы не проверяем числа не подходящие по маске, а сразу составляем те, что нам подходят. ’’’ from itertools import product#импортируем модуль product из itertools digits = ’0123456789’#всевозможные цифры res = []#список, в который мы будем сохранять числа for i in range(3):#проведя анализ, можно понять, что в звёздочке не может быть больше двух цифр, #по этой причине делаем цикл от 0 до 2 включительно. for digit_1 in product(digits,repeat = i):#делаем произвольную подпоследовательность из цифр, #таким способом, мы симулируем звёздочку for digit_2 in product(digits,repeat = 1):#такой записью, мы симулируем знак вопроса res += [int(’1’ + ’’.join(digit_1) + ’3577’ + ’’.join(digit_2) + ’0’)] #собираем нашу маску по частям, функция join переводит элементы кортежа, списка в строку. for x in sorted(set(res)):#проходимся по всем получившимся числам if x <= 10**9 and x % 1975 == 0: print(x,x//1975)#вывод числа и его частного
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 3*4?50, а количество четных цифр числа больше количества нечетных.
В ответ запишите одно число – количество найденных чисел.
t = [] for x in range(10**3, 10**7+1): s = str(x) cht = [int(i) for i in s if int(i) % 2 == 0] ncht = [int(i) for i in s if int(i) % 2 != 0] if (s[0] == ’3’) and (s[-2:] == ’50’) and (s[-4] == ’4’) and len(cht) > len(ncht): t.append(x) print(len(t))
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, являющимися полными квадратами, соответствующие маске 82??9* и имеющих более 25 делителей.
В ответ запишите найденные числа в порядке возрастания через пробел.
for x in range(10**4, 10**8+1): c = set() s = str(x) if x**0.5 == int(x**0.5): for i in range(1, int(x**0.5)+1): if x % i == 0 and s[:2] == ’82’ and s[4] == ’9’: c.add(i) c.add(x//i) if len(c) > 25: print(x)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 137?15*7*50, делящиеся на 178750 без остатка.
В ответ запишите пары найденных чисел в порядке возрастания через пробел: найденное число и частное от деления на 178750.
from fnmatch import fnmatch for x in range(137101250,10**12+1,178750): if fnmatch(str(x),’137?15*7*50’): print(x,x//178750)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, находящихся в интервале [], найдите все числа, соответствующие маске 16* и имеющих ровно 13 нетривиальных делителей.
В ответ запишите найденные числа в порядке возрастания через пробел.
for x in range(10**3, 10**6+1): c = set() s = str(x) if x**0.5 == int(x**0.5): for i in range(2, int(x**0.5)+1): if x % i == 0 and s[:2] == ’16’: c.add(i) c.add(x//i) if len(c) == 13: print(x)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске ?5?22*4 и являющиеся полными квадратами.
В ответ запишите найденные числа в порядке возрастания через пробел.
for x in range(1000, 10**8+1): s = str(x) if (s[1] == ’5’) and (s[3:5] == ’22’) and (s[-1] == ’4’) and int(x**0.5)**2 == x: print(x)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
– символ «#» означает любое простое двухзначное число
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске #1*1#.
В ответ запишите количество найденных чисел.
from fnmatch import * def f(x): for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True t = [] for i in range(10, 100): if f(i): t.append(i) res = [] for i in range(10**6): if fnmatch(str(i), ’1*1’): for j in t: for k in t: n = int(str(j) + str(i) + str(k)) if n <= 10**10: res.append(n) print(len(set(res)))
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
– символ «#» означает любое простое трехзначное число
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 1?0*12#10
В ответ запишите количество найденных чисел.
from fnmatch import * #функция для проверки на простоту def f(x): for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True t = [] #список простых чисел for i in range(100, 1000): if f(i): t.append(i) res = [] #список искомых чисел for i in range(10**7): if fnmatch(str(i), ’1?0*12’): for j in t: if len(str(i)+str(j)+’10’) <= 11: res.append(str(i)+str(j)+’10’) else: break print(len(res))
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, принадлежащих отрезку [], найдите все числа, которые соответствуют маске 1?904*4, а сумма их цифр делится без остатка на 34.
В ответ запишите числа в порядке возрастания через пробел.
for x in range(10**6, 10**7+1): s = str(x) if (s[0] == ’1’) and (s[2:5] == ’904’) and (s[-1] == ’4’) and (sum(int(i) for i in s) % 34 == 0): print(x)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру, кратную трем;
– символ «*» означает любое число, которое является делимым для суммы своих цифр; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12310405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 12*3?45, делящиеся на 965 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 965) в порядке возрастания через пробел.
for x in range(122555, 10**9, 965): s = str(x) a = s[2:-4] sm = sum(int(i) for i in a) if sm > 0: if (int(a) % sm == 0) and (s[:2] == ’12’) and (s[-4] == ’3’) and \ (int(s[-3]) % 3 == 0) and (s[-2:] == ’45’): print(x, x // 965)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну четную цифру;
– символ «*» означает любую последовательность нечетных цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12312405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске ?*309, делящиеся на 10089 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 10089) в порядке возрастания через пробел.
for x in range(10089, 10**9, 10089): s = str(x) t = [i for i in s[1:-3] if int(i) % 2 == 0] if (s[-3:] == ’309’) and (int(s[0]) % 2 == 0) and (not t): print(x, x // 10089)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 11*777*0, делящиеся на 8450 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 8450) в порядке возрастания через пробел.
for x in range(8450, 10**9+1, 8450): s = str(x) if (s[:2] == ’11’) and (’777’ in s[2:-1]) and (s[-1] == ’0’): print(x, x // 8450)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «&» означает пару произвольных цифр вида «четная+нечетная»;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123&4?5 соответствуют числа 12340405 и 12322405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 2*11&0?, делящиеся на 6170 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 6170) в порядке возрастания через пробел.
for x in range(6170, 10**9+1, 6170): s = str(x) if ((s[0] == ’2’) and (s[-6:-4] == ’11’) and (int(s[-4]) % 2 == 0) and (int(s[-3]) % 2 == 1) and (s[-2] == ’0’)): print(x, x // 6170)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «&» означает пару четных произвольных цифр;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123&4?5 соответствуют числа 12340405 и 12322405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске ?189&*, делящиеся на 36170 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 36170) в порядке возрастания через пробел.
for x in range(36170, 10**9+1, 36170): s = str(x) if (s[1:4] == ’189’) and (int(s[4]) % 2 == 0) and (int(s[5]) % 2 == 0): print(x, x // 36170)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске ?75*47?, делящиеся на 290 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 290) в порядке возрастания через пробел.
for x in range(290, 10**7+1, 290): s = str(x) if (s[1:3] == ’75’) and (s[-3:-1] == ’47’): print(x, x // 290)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске 63*095?4, делящиеся на 1034 без остатка.
В ответ запишите пары чисел (найденное число и результат деления его на 1034) в порядке возрастания через пробел.
for x in range(1034, 10**9+1, 1034): s = str(x) if (s[0:2] == ’63’) and (s[-1] == ’4’) and (s[-5:-2] == ’095’): print(x, x // 1034)
Ошибка.
Попробуйте повторить позже
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ « ? » означает ровно одну произвольную цифру;
– символ « * » означает любую последовательность цифр произвольной длины; в том числе « * » может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске , делящиеся на 17253 без остатка.
В ответе запишите пары чисел: найденное число и соответствующие ему результат деления на 17253. Пары расположите в порядке возрастания найденных чисел. Все числа в ответе отделите друг от друга пробелом.
from fnmatch import fnmatch for x in range(17_253, 10 ** 9 + 1, 17_253): s = str(x) if fnmatch(s, ’8?4*2?9*8’): print(x, x // 17_253)