На обработку поступает натуральное число 10 в 9 степени нужно написать программу которая выводит

Всем Столкнулся с такой задачей: Условие:
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу — для заданного натурального 𝐴 найти минимальное натуральное 𝑁 такое, что 𝑁 в степени 𝑁 ( 𝑁 , умноженное на себя 𝑁 раз) делится на 𝐴 . От года к году и от ученика к ученику меняется только число 𝐴 . Вы решили помочь будущим поколениям. Для этого вам необходимо написать программу, решающую эту задачу. Входные данные:
Во входном файле содержится единственное число 𝐴 ( 1 ≤ 𝐴 ≤ 10^9 ) — на всякий случай; вдруг Мария Ивановна задаст большое число, чтобы «завалить» кого-нибудь…). Выходные данные:
Вывести единственное число 𝑁 . Примеры:
Ввод 1:

Долго пытался решить задачу. Мой код с описаниями:

Python from sys import setrecursionlimit setrecursionlimit(10**9) # увеличение максимальной глубины рекурсии def fast_pow(a, n): # функция быстрого возведения в степень if n == 0: return 1 elif n == 1: return a elif n % 2 != 0: return a * fast_pow(a, n-1) elif n % 2 == 0: return fast_pow(a*a, n/2) def decomp(n): # функция разложения числа на простые множители ans = [] d = 2 while d * d 1: ans.append(n) return ans x = int(input()) a = list(set(decomp(x))) # разложение числа x на простые множители в единственном экземпляре b = decomp(x) # разложение числа x на простые множители y = 1 for i in range(len(a)): # перемножение простых множителей y *= a[i] k = 1 n = k*y if x == 1: # если x = 1, то и n = 1 print(1) elif len(b) >= 29: # 29 — потому что хотя бы 2**30 уже будет более 10**9, что противоречит условию задачи print(y) # тогда y**y уже будет делится на n else: while pow(n,n,x) != 0: n = k*y k += 1 print(n)

Программа не проходит последний тест проверки. Помогите, пожалуйста, исправить ошибки в коде.

Читайте также:
Как устанавливать программы rar

Разбор 24 задание || ЕГЭ Информатика || ДЕМО 2019

Источник: ru.stackoverflow.com

На обработку поступает естественное число, не превышающее 10^9. Необходимо написать программку,

На обработку поступает естественное число, не превышающее 10^9. Необходимо написать программку, которая выводит на экран произведение цифр числа, кратных 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программер написал программку ошибочно.
Напоминание: 0 делится на хоть какое естественное число.
Текст написанной программером программы (с ошибками):
var N, k, digit, prod: longint;
begin
readln(N);
prod := N mod 10;
k := 0;
while (N gt; 0) do begin
digit := N mod 10;
if (digit mod 3 = 0) then begin
prod := prod*digit;
k := k+1;
end;
N := N div 10;
end;
if (k = 0) then
writeln(‘NO’)
else
writeln(N)
end.
Найдите все ошибки в этой программке и исправьте их, при этом не меняя весь метод.

Задания 9-10 | ЕГЭ по информатике | ДЕМО-2023


Как правило, ошибок две. Я их нашёл, но задание мне не засчитали. Помогите найти оплошности в программке, из-за которых метод работает ошибочно!

Сьянова Элина 2019-04-03 11:51:42

Дарья Гильденскиоль 2019-04-03 11:43:41

  • Лунченков Семик
  • Информатика
  • 2019-04-03 11:42:33
  • 3
  • 1

Василиса Лищнева 2019-04-03 11:45:57

Var N, k, digit, prod: longint;
begin
readln(N);
prod := 1; // Творенье не обязано быть равно 0, в вашем случае просто отделают последнюю цифру, не проверяя ее кратна она 3 либо нет
k := 0;
while (N gt; 0) do
begin
digit := N mod 10;
if (digit mod 3 = 0) and (digitlt;gt;0) then begin // (digitlt;gt;0) проверка на неравенство нулю(хоть какое число*0=0)
prod := prod*digit;
k := k+1;
end;
N := N div 10;
end;
if (k = 0)
then writeln(‘NO’)
else writeln(prod) // Выводить необходимо не окончательное N, а конкретно произведение(prod)
end.

Читайте также:
До какого года программа за второго ребенка до какого года

Источник: obrazovalka.com

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

сумму всех отрицательных чисел последовательности и максимальное число в последовательности. Известно, что вводимые числа по абсолютной величине не превышают 1000. Программист написал программу неправильно. var s,i,x,mx: integer; begin mx := 0; s := 0; for i := 1 to 4 do begin read (x); if x < 0 then s := x; if x > mx then mx := x; end; writeln(s); writeln(mx) end. Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе чисел -5 2 -4 3. 2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Источник: uchi.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru