Желательно на Питоне и на С++! Степень
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу — для заданного натурального A найти минимальное натуральное N такое, что N в степени N (N, умноженное на себя N раз) делится на A. От года к году и от ученика к ученику меняется только число A.
Вы решили будущим поколениям. Для этого вам необходимо написать программу, решающую эту задачу.
Входные данные
Во входном файле содержится единственное число A (1≤A≤109 — на всякий случай; вдруг Мария Ивановна задаст большое число, чтобы «завалить» кого-нибудь…).
Выходные данные
В выходной файл вывести единственное число N.
Примеры
Ввод
8
Вывод
4
Ввод
1
Вывод
1
Те ответы, которые расположены на киберфоруме не принимает! Пишет, что программа долго выполняется
Комментарий смело удаляй!
Объяснение:
```python
def find_degree(a):
n = 1
while True:
if n**n % a == 0:
return n
n += 1
# ввод числа A
a = int(input())
# вызов функции для поиска степени N
result = find_degree(a)
# вывод ответа
print(result)
```
Теперь давайте разберемся с работой программы.
1. Мы создаем функцию `find_degree(a)`, которая будет искать степень N для числа A. Внутри функции мы инициализируем переменную `n` со значением 1 и начинаем цикл `while True`.
2. На каждой итерации цикла мы проверяем, делится ли `n` в степени `n` на `a` без остатка. Для этого используем оператор `%`, который возвращает остаток от деления. Если остаток равен 0, значит найдено нужное значение степени N, и мы возвращаем `n`.
3. Если остаток от деления не равен 0, мы увеличиваем значение `n` на 1 и повторяем проверку до тех пор, пока не найдем нужную степень N.
4. После определения функции `find_degree(a)` мы считываем входные данные - значение числа A с помощью функции `input()`. Функция `int()` используется для преобразования строки в целое число.
5. Затем мы вызываем функцию `find_degree(a)` и сохраняем результат в переменную `result`.
6. Наконец, мы выводим полученный результат с помощью функции `print(result)`.
Теперь рассмотрим решение на языке C++. Вот код программы:
```cpp
#include
using namespace std;
int findDegree(int a) {
int n = 1;
while (true) {
if (pow(n, n) % a == 0) {
return n;
}
n++;
}
}
int main() {
// ввод числа A
int a;
cin >> a;
// вызов функции для поиска степени N
int result = findDegree(a);
// вывод ответа
cout << result << endl;
return 0;
}
```
Давайте разберемся с работой программы на C++.
1. Мы создаем функцию `findDegree(a)`, которая будет искать степень N для числа A. Внутри функции мы инициализируем переменную `n` со значением 1 и начинаем цикл `while (true)`.
2. На каждой итерации цикла мы проверяем, делится ли результат функции `pow(n, n)` (возведение числа `n` в степень `n`) на `a` без остатка. Для возведения в степень мы используем библиотечную функцию `pow()`. Если остаток равен 0, значит найдено нужное значение степени N, и мы возвращаем `n`.
3. Если остаток от деления не равен 0, мы увеличиваем значение `n` на 1 и повторяем проверку до тех пор, пока не найдем нужную степень N.
4. В функции `main()` мы считываем входные данные - значение числа A с помощью оператора ввода `cin >> a`.
5. Затем мы вызываем функцию `findDegree(a)` и сохраняем результат в переменную `result`.
6. Наконец, мы выводим полученный результат с помощью оператора вывода `cout << result << endl`.
Надеюсь, эти решения помогут вам решить задачу о степени! Если у вас есть еще вопросы, не стесняйтесь задавать.