Вопрос задан 03.12.2023 в 04:57. Предмет Информатика. Спрашивает Селянинова Ксения.

С++ Степень! Даю 25 баллов, только на С++! есть код прошедший 12 тестов из 15(см. текстовый файл)

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

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Назаров Никита.

Тесты проваливаются на степенях двойки (A=2^n) при n >= 5

Напишу два решения. Первое просто показывает алгоритм, но имеет ограничение на N (результат не может быть больше 15 из-за переполнения unsigned long long)

Второе по своей сути такое же, но не имеет ограничений. Однако для этого понадобится особый тип данных big_integer. Вторую реализацию прикрепил к ответу в виде текстового файла из-за ограничения на количество символов в ответе.

// первое решение

#include <iostream>

typedef unsigned long long ulong;

ulong pow(int num, int pow);

int main()

{

   int a = 0;

   std::cin >> a;

   int n = 0;

   while (n++ <= a)

   {

       if (pow(n, n) % a == 0)

       {

           std::cout << n << std::endl;

           break;

       }

   }

   return 0;

}

ulong pow(int num, int pow)

{

   ulong res = num;

   for (int i = 1; i < pow; ++i)

       res *= num;

   return res;

}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Из предоставленного текста я понимаю, что вам нужно написать программу на языке C++, которая решает задачу, связанную со степенью числа. Задача заключается в том, чтобы найти минимальное натуральное число N, такое, что N в степени N (N, умноженное на себя N раз) делится на заданное число A.

Для решения этой задачи вам потребуется использовать циклы и условные операторы. Входные данные представляют собой единственное число A (1≤A≤10^9). Вам нужно вывести число N, которое удовлетворяет условию задачи.

Вот пример решения на языке C++:

```cpp #include

int main() { int A; std::cin >> A;

int N = 1; while (true) { int result = 1; for (int i = 0; i < N; i++) { result *= N; } if (result % A == 0) { std::cout << N << std::endl; break; } N++; }

return 0; } ```

Эта программа считывает число A с помощью функции `std::cin`, а затем использует цикл `while` для поиска числа N, удовлетворяющего условию задачи. Внутри цикла используется вложенный цикл `for`, чтобы вычислить N в степени N. Затем проверяется, делится ли результат на A с помощью оператора `%`. Если делится, то программа выводит значение N с помощью функции `std::cout` и завершает цикл с помощью оператора `break`.

Примеры:

Ввод: ``` 1 ``` Вывод: ``` 1 ```

Ввод: ``` 8 ``` Вывод: ``` 4 ```

Пожалуйста, попробуйте использовать этот код и дайте мне знать, если у вас возникнут какие-либо вопросы.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос