Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
getc
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 5
1

Возведение числа в степень за минимальное количество умножений, не используя возведение в степень (в чем ошибка?)

22.04.2018, 12:13. Просмотров 683. Ответов 5
Метки нет (Все метки)

должно число подводиться в степень за минимальное кол умножения не используя возведение в степень. Помогите, что не так? И почему? Спасибо за внимание!!!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdioh.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    int k, m, n;
    printf("n");
    scanf("%d", &n);
    printf("k");
    scanf("%d", &k);
    m = n;
    if ((k / 2) != 0)
    {
        k = k - 1;
    }
    for (i = 0; i < k / 2; i++)
    {
        m *= m;
    }
    else
    {
        for (i = 0; i < k / 2; i++)
        {
            m *= m;
        }
        getch();
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2018, 12:13
Ответы с готовыми решениями:

Возведение в степень за ограниченное количество умножений
Дано действительное число z. Не пользуясь никакими другими операциями, кроме умножения, получить:...

Возведение в степень, используя сложение
Как реализовать 3^y при помощи сложения и цикла while?

Возведение числа q в степень (n-1)
Проблема связана с возведением числа q в степень (n-1). int q; int h; int bn,i; int b1,n; int...

Возведение вещественного числа в степень pow
Собственно вижу, что накосячил где то с типизацией, но где уже сломал голову искать. Код примерно...

Бинарное возведение в степень длинного числа
Нужно создать длинное число, например 100 знаков, чтобы оно работало с бинарным возведением в...

5
QuakerRUS
527 / 467 / 221
Регистрация: 30.10.2017
Сообщений: 1,477
Завершенные тесты: 3
22.04.2018, 12:20 2
C
1
#include <stdioh.h>
Нет такого заголовочного файла. Возможно имели ввиду stdio.h

C
1
else
else должен идти после if, а у вас после for.

C
1
for(i=0;i<k/2;i++)
Не указан тип i.

В сам алгоритм не вникал, но он какую то дичь делает. Чтобы вычислить степень числа, нужно первое число умножить само на себя количество раз, указанное во втором числе.
0
Байт
Эксперт C
20473 / 12998 / 2733
Регистрация: 24.12.2010
Сообщений: 27,200
22.04.2018, 12:33 3
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Чтобы вычислить степень числа, нужно первое число умножить само на себя количество раз, указанное во втором числе.
Не обязательно.
Вот простой пример
C
1
2
3
4
5
6
int PowB(int x, int n)
{
   if (n==0) return 1;
   if (n==1) return x;
   return PowB(x, n/2)*PowB(x, n-n/2);
}
Если хочется, можно реализовать этот алгоритм и без рекурсии
Но в стартовом коде, да, бреда много.
getc, неужели транслятор вам об этом не сказал?
1
QuakerRUS
527 / 467 / 221
Регистрация: 30.10.2017
Сообщений: 1,477
Завершенные тесты: 3
22.04.2018, 12:36 4
Байт, да, я уже догадался, перечитав условие задачи. Как раз пытался сообразить что то подобное.
0
Байт
Эксперт C
20473 / 12998 / 2733
Регистрация: 24.12.2010
Сообщений: 27,200
22.04.2018, 12:43 5
Цитата Сообщение от QuakerRUS Посмотреть сообщение
я уже догадался
Самое интересное, что приведенный мной код совсем не хорош. Например, при n=4 происходит 2 раза вычисление x2 То есть можно добиться результата всего за 2 умножения, вместо 3-х. Для бОльших значений неэффективность растет.
Наверное, можно для оптимального вычисления использовать двоичное представление показателя. Но вот так сразу код не складывается
0
QuakerRUS
527 / 467 / 221
Регистрация: 30.10.2017
Сообщений: 1,477
Завершенные тесты: 3
22.04.2018, 12:58 6
Цитата Сообщение от Байт Посмотреть сообщение
Но вот так сразу код не складывается
C
1
2
3
4
5
6
7
int powB(int x, int n)
{
    if (n == 0) return 1;
    if (n == 1) return x;
    if (n % 2 == 0) return powB(x * x, n / 2);
    return x * powB(x, n - 1);
}
1
22.04.2018, 12:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2018, 12:58

Возведение числа в степень, восьмеричная система
Программа получает на вход 2 числа в восьмеричной системе счисления(то есть нужна проверка вводимых...

Возведение в степень
Здрасьте! Есть выражение {x}^{-k*(t/4)}, как его записать? #include &lt;math.h&gt; #include &lt;stdio.h&gt; ...

Возведение в степень
Помогите написать программу, возводящщую число M в степень N (-10&lt;M&lt;10, 0&lt;N&lt;10 - проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru