Ошибка.
Попробуйте повторить позже
Тимофей любит число и все числа кратные
Вопрос — где первое вхождение кратного в последовательности ? Если последовательность не содержит кратных , в ответе вместо этого запишите .
Поскольку -й член данной последовательности можно записать в виде , посчитаем сумму геометрической прогрессии, поэтому искомым ответом является минимальное натуральное число , такое что делится на . Если кратно , вы можете рассмотреть, делится ли на вместо этого и в противном случае вы можете рассмотреть, делится ли на . Поэтому давайте определим целое число таким образом, что если кратно или в противном случае. Теперь достаточно найти минимальное натуральное число i такое, что делится на , т. е. такое что остаток от деления на равен . Если кратно , то кратно для любого положительного целого числа , поэтому его остаток деленное на никогда не будет равно . То же самое относится, когда кратно . Если ни одно из них не выполняется, то по теореме Эйлера выполняется (mod ).
Поэтому, вам достаточно рассмотреть лишь подсчитать функцию эйлера за и проверить все делители её значения. Потому что фактически в задаче вас просят найти показатель числа по модулю .
Заметьте, что, не прибегая к приведенному выше математическому наблюдению, вы можете предположить, что «если ответ не равен , тогда ответ будет довольно маленьким;
Маленьким значит не более . Поэтому вы можете рассмотреть первые значений.
Поэтому фактически в задаче всего лишь требуется подсчитать сумму геометрической прогрессии и написать перебор
Решение на С++
void solve() { int K; K = 999983; int cur = 10; for(int i = 0; i < 9 * K; ++i){ if(7 * (cur - 1) % (9 * K) == 0){ cout << i + 1 << "\n"; return 0; } cur = (cur * 10) % (9 * K); } cout << "-1\n"; return 0; }
Решение на 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)
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [250 000 000; 700 000 000], которые можно представить в виде , где m – чётное число, n — чётное число. В ответе запишите все найденные числа в порядке убывания, а справа от каждого числа — сумму всех его нетривиальных делителей.
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
def count_del(x):
ans = []
for i in range(2, int(x**0.5)+1):
if x % i == 0:
ans += [i]
if i != x // i:
ans += [x//i]
return sum(ans)
ans = []
for i in range(0, 100, 2):
for j in range(0, 100, 2):
N = 2**i*5**j
if 250000000 <= N <= 700000000:
ans.append([N, count_del(N)])
ans = sorted(ans, reverse = True)
for i in range(len(ans)):
print(*ans[i])
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [100 000 000; 500 000 000], которые можно представить в виде , где m – нечётное число, n — чётное число. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму m+n.
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
ans = []
for i in range(1, 101, 2):
for j in range(0, 100, 2):
N = 3**i*7**j
if 100000000 <= N <= 500000000:
ans.append([N, i+j])
ans = sorted(ans)
for i in range(len(ans)):
print(*ans[i])
Ошибка.
Попробуйте повторить позже
Пусть , где — натуральное число. Найдите пять наименьших значений , при которых нельзя представить в виде произведения трёх различных натуральных чисел, не равных .
В ответе запишите найденные значения в порядке возрастания через пробел.
a = [] for x in range(2, 1000): for y in range(x + 1, x + 1000): t = max(int(9000000 / (x * y)), y + 1) m = int(9010000 / (x * y)) for z in range(t, min(t + 300, m)): s = x * y * z if s > 9000000 and s not in a: a.append(s) a.sort() k = 0 for i in range(9000001, 1000000000): if i not in a: print(i - 9000000, end=’ ’) k += 1 if k == 5: break
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа принадлежащие числовому отрезку которые можно представить в виде (m,n - целые неотрицательные числа). Программа должна вывести количество таких чисел.
ans = 0 for m in range(100): for n in range(100): N = 4 ** m * 5 ** n if 2 * 10 ** 8 <= N <= 6 * 10 ** 8: ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
Пусть — сумма минимального и максимального натурального делителей целого числа, не считая единицы и самого числа. Если таких делителей нет, то считаем значение равным нулю.
Напишите программу, которая перебирает целые числа, большие , в порядке возрастания и ищет среди них такие, для которых значение при делении на дает в остатке . Вывести первые найденных чисел через пробел.
def m(n): for x in range(2, int(n ** 0.5) + 1): if n % x == 0 and x != n // x: return x + n // x return 0 k = 0 for i in range(425162, 10000000000): if m(i) % 7 == 3: print(i, end=’ ’) k += 1 if k == 5: break
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа , принадлежащие числовому отрезку , которые можно представить в виде , где - четное число, - нечетное число. Программа должна вывести количество таких чисел.
if x>=a[0] and x <= a[1]:
return True
return False
# Наш промежуток
a = [200000000, 400000000]
ans = 0
# так как 2**29 > 400 000 000
for m in range(0,29,2): # Так как четные
# так как 3**19 > 400 000 000
for n in range(1, 19, 2): # Так как нечетные
if inside(2**m * 3**n, a):
ans += 1
print(ans)
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа , принадлежащие числовому отрезку [200 000 000;600 000 000], которые можно представить в виде . Программа должна вывести количество таких чисел.
if x>=a[0] and x <= a[1]:
return True
return False
# Наш промежуток
a = [200000000, 600000000]
ans = 0
# так как 4**15 > 600 000 000
for m in range(15):
# так как 5**13 > 600 000 000
for n in range(13):
if inside(4**m * 5**n, a):
ans += 1
print(ans)
Ошибка.
Попробуйте повторить позже
Пусть M - сумма минимального и максимального натурального делителей целого числа, не считая единицы и самого числа. Если таких делителей нет, то считаем значение M равным нулю.
Напишите программу, которая перебирает целые числа, большие 452 021, в порядке возрастания и ищет среди них такие, для которых значение М при делении на 7 дает в остатке 3. Вывести первые 5 найденных чисел и соответствующие им значения М.
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return i + n // i
return 0
k = 0
for i in range(452021 + 1, 10000000000000):
if m(i) % 7 == 3:
print(i, m(i))
k += 1
if k == 5: break
Ошибка.
Попробуйте повторить позже
Пусть M(N) – произведение 5 наименьших различных натуральных делителей натурального числа N, не считая единицы. Если у числа N меньше 5 таких делителей, то M(N) считается равным нулю.
Найдите 5 наименьших натуральных чисел, превышающих 500 000 000, для которых .
В ответе запишите найденные значения M(N) в порядке возрастания соответствующих им чисел N.
x = 500000001
while counter < 5:
d = set()
for i in range(2, int(x ** 0.5) + 1):
if x % i == 0:
d |= {i, x // i}
if len(d) >= 5:
d = sorted(d)[:5]
p = 1
for i in d:
p *= i
if p < x:
print(p)
counter += 1
x += 1
Ошибка.
Попробуйте повторить позже
Напишите программу, которая вычислит среднее арифметическое значений
, где a это числа, не превышающие 1013 и взаимно простые с ним.
По теореме Эйлера , так что все значения равны 1, и, следовательно, их среднее – тоже. (Кстати, из того, что для простых p следует Малая теорема Ферма , которая применима и в этой задаче, так как 1013 простое).
Ладно-ладно, снова шучу. Последний раз, обещаю.
if a == b:
return a
if a != 0 and b != 0:
return gcd(a % b, b % a)
else:
return a + b
def phi(n):
fi = 0
for i in range(1, n + 1):
if gcd(n, i) == 1:
fi += 1
return fi
n = 1013
sum = 0
count = 0
for a in range(1, n + 1):
if gcd(n, a) == 1:
sum += (a ** phi(n)) % n
count += 1
print(sum // count)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку , числа кратные или , но не кратные одновременно и и . Выведите количество таких чисел.
count = 0 for i in range(175256, 196429): if (i % 57 == 0 and i % 19 != 0) or (i % 57 != 0 and i % 19 == 0): count += 1 print(count)
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, принадлежащие отрезку [95 000 000; 130 000 000], у которых ровно пять различных чётных делителей (количество нечётных делителей может быть любым). В ответе перечислите найденные числа в порядке убывания.
def is_prime(n): for j in range(2, int(n ** 0.5) + 1): if n % j == 0: return False return True ans = [] for i in range(3, 1000): if is_prime(i): t = i ** 4 * 2 if 95000000 <= t <= 130000000: ans.append(t) ans.sort(reverse=True) print(*ans)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку , числа кратные двум или трем, но не кратные одновременно и двум, и трём. Выведите количество таких чисел.
counter = 0 for i in range(164925, 623594+1): if (i % 2 == 0 or i % 3 == 0) and not(i % 2 == 0 and i % 3 == 0): counter += 1 print(counter)
Ошибка.
Попробуйте повторить позже
Обозначим через целую часть среднего арифметического всех простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение равным нулю. Напишите программу, которая перебирает целые числа, большие , в порядке возрастания и ищет среди них такие, для которых значение при делении на даёт в остатке . Выведите первые найденных числа в порядке возрастания через пробел.
def prime(n): for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True def count_divs(n): divs = [] for i in range(2, int(n**0.5)+1): if n % i == 0: if prime(i): divs.append(i) if i != n//i: if prime(n//i): divs.append(n//i) if divs == []: return 0 return sum(divs)//len(divs) counter = 0 for i in range(420000, 1000000000): if count_divs(i) % 42 == 24: print(i) counter += 1 if counter == 5: break
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [10000; 90000], числа в которых сумма второй и четвёртой цифры равны сумме перой, третей и пятой цифрам. Программа должна вывести количество таких чисел.
counter = 0 for i in range(10000, 90000): t = str(i) if int(t[1]) + int(t[3]) == int(t[0]) + int(t[2]) + int(t[4]): counter += 1 print(counter)
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [100 000 000; 500 000 000], которые можно представить в виде , где m – нечётное число, n — чётное число. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму m+n, разделяя все числа пробелом.
for i in range(1, 101, 2):
for j in range(0, 100, 2):
N = 3**i*7**j
if 100000000 <= N <= 500000000:
ans.append([N, i+j])
ans = sorted(ans)
for i in range(len(ans)):
print(*ans[i])
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [200 000 000; 600 000 000], которые можно представить в виде где m – чётное число, n – нечётное число. В ответе запишите все найденные числа в порядке возрастания через пробел.
for m in range(0, 1000, 2): for n in range(1, 1000, 2): N = 4**m * 5**n if 200_000_000 < N < 600_000_000: print(N)
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [250 000 000; 700 000 000], которые можно представить в виде , где m чётное число, n чётное число. В ответе запишите все найденные числа в порядке убывания, а справа от каждого числа сумму всех его нетривиальных делителей. В ответ числа разделять ровно одним пробелом.
ans = []
for i in range(2, int(x**0.5)+1):
if x % i == 0:
ans += [i]
if i != x // i:
ans += [x//i]
return sum(ans)
ans = []
for i in range(0, 100, 2):
for j in range(0, 100, 2):
N = 2**i*5**j
if 250000000 <= N <= 700000000:
ans.append([N, count_del(N)])
ans = sorted(ans, reverse = True)
for i in range(len(ans)):
print(*ans[i])
Ошибка.
Попробуйте повторить позже
Найдите все натуральные числа, N, принадлежащие отрезку [300 000 000; 500 000 000], которые можно представить в виде , где m нечётное число, n чётное число. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа сумму m+n. Числа написать в ответ через один пробел.
for i in range(1, 101, 2):
for j in range(0, 100, 2):
N = 3**i*7**j
if 300000000 <= N <= 500000000:
ans.append([N, i+j])
ans = sorted(ans)
for i in range(len(ans)):
print(*ans[i])