snapthelife
@snapthelife
HTML5 & CSS & PHP & JavaScript

(C++)Как возвести целое число в неотрицательную целую степень?

Эсть задача которую я не могу решить, подскажите что я зделал не так и как нужно написать чтобы было правильно.

Вот сама задача:

Напишите функцию power, реализующую возведение целого числа в неотрицательную целую степень. Функция power должна принимать на вход два целых числа и возвращать целое число (смотрите шаблон кода). При выполнении задания учтите, что функция обязательно должна называться power, функция ничего не должна читать со входа или выводить.

Требования к реализации: в этом задании вам нужно реализовать только функцию power. Вы можете определять вспомогательные функции, если они вам нужны. Реализовывать функции main не нужно.

Ограничения: библиотеку cmath (и math.h) использовать запрещено.

Шаблон кода:

int power(int x, unsigned p) {
int answer;
/* считаем answer */
return answer;
}

Вот мое решение:

int power(int x, unsigned p) {
int answer = 1;
for(int i=1; i <= 2 * p; i++)
{ if(p < 0)
break;
answer *= x;
}
return answer;
}
  • Вопрос задан
  • 4788 просмотров
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
int power(int x, size_t p) {
	int answer = 1;
	for(size_t i = 0; i < p; i++)
		answer *= x;
	
	return answer;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
int power(int x, unsigned int p) {
  int answer = 1;
  while (p) {
    if (p & 1) {
      answer *= x;
    }
    p >>= 1;
    x *= x;
  }
  return answer;
}
Ответ написан
@AVI-crak
int power(int x, unsigned int p)
{
    int out = 1;
    do{
        if (p & 1) {
            p--;
            out *= x;
        }else{
            p >>= 1;
            x *= x;
        };
    }while (p);
    return out;
};

проверка https://godbolt.org/z/sc4h311Te
например возведение 3 в степень 19 - требует 7 умножений
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы