Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.65
v0l0d1ka
9 / 9 / 0
Регистрация: 14.12.2010
Сообщений: 129
#1

Возведение в степень - C++

09.10.2011, 01:28. Просмотров 5053. Ответов 30
Метки нет (Все метки)

Подскажите, как написать программу возведения 2-ки в миллионную степень и вывести результат на экран.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <math.h>
#include <cstdlib>
 
 
int main ()
{
  printf ("7 ^ 3 = %lf\n", pow (7.0,3.0));
  printf ("4.73 ^ 12 = %lf\n", pow (4.73,12.0));
  printf ("32.01 ^ 1.54 = %lf\n", pow (32.01,1.54));
  printf ("2 ^ 1000000.0 = %lf\n", pow (2.0,1000000.0));
  system("pause");
  return 0;
}
Не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 01:28     Возведение в степень
Посмотрите здесь:

Возведение в степень! - C++
Возник вопрос - Возможно пока не понятна в чем мысль! Попробую на примере объяснить! Возведение числа 2 в 1000 - ую степень будет...

возведение в степень! - C++
Кто помнит функцию возведения в степень.?? &quot;трам-пам-пам&quot; (a,b) ???? Добавлено через 3 минуты И еще желательно...

Возведение в степень. C++ - C++
можно ли написать программу для возведения в вводимую степень вводимого числа с помощью рекурсивной функции

Возведение в степень! - C++
Определить {\chi }^{15} без использования функций и не более чем 5-ю арифметическими операциями.

возведение в степень - C++
помогите плиз! в файле есть задачка. нужно рекурсивно возвести в степень. Код: #include &lt;iostream&gt; float stepen(float a, int n) { ...

Возведение в степень - C++
Совсем недавно начал изучать C++. Учу по книге. Было задание: Вводишь число Вводишь степень в которую надо возвести это число ...

Возведение в степень - C++
Всем привет! Нужно найти значение выражения 2^(x^y), х=3,251, у=0,325. Что-то я запуталась... То ли тип указала не тот, то ли еще...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
09.10.2011, 14:28     Возведение в степень #21
Цитата Сообщение от aeshes Посмотреть сообщение
Просто было подозрение, что помимо быстрого возведения в степень можно как-то оптимизировать способ хранения большого числа именно для этой задачи, где 2 в основании
я вижу только один способ, это массив чаров или с двуразрядными, или с одноразрядными числами (не решил пока) и переносы на триггерах (скорее D) и счетчиках, и операции преимущественно бинарные. картину "в общем" вижу. в ближайшее время сяду за реализацию.
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.10.2011, 14:34     Возведение в степень #22
Цитата Сообщение от alkagolik Посмотреть сообщение
это массив чаров или с двуразрядными, или с одноразрядными числами
Можно спокойно по 9 цифр в одном элементе массива хранить.
Или по 17-18, если ассемблерные вставки использовать =\ Как - не знаю, не пробовал.
aeshes
439 / 202 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 14:40     Возведение в степень #23
Цитата Сообщение от alkagolik Посмотреть сообщение
я вижу только один способ, это массив чаров или...
Мне кажется, что массив чаров даст оптимизацию в используемой памяти для хранения. Но количество операций над массивом будет такое же, что и над массивом целых. Хотя могу и ошибаться
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 14:41     Возведение в степень #24
А зачем здесь вообще алгоритмы
http://www.cyberforum.ru/cgi-bin/latex.cgi?2^n = 10...0, где после 1 стоит n нулей
aeshes
439 / 202 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 14:43     Возведение в степень #25
Thinker, ну это да, я еще в самом начале написала, что это так. А если нужен десятичный вид, а не двоичный?

О, еще где-то видела реализацию больших чисел как массива unsigned long. Когда твое число превосходит максимально допустимое в данном типе, у тебя в след элемент массива записывается это переполнение, а пред элемент обнуляется
Короче, проблема, я так понимаю, в реализации мат операций над большим числом в конкретном представлении
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
09.10.2011, 14:43     Возведение в степень #26
Thinker, ты с http://www.cyberforum.ru/cgi-bin/latex.cgi?10^n не путаешь, случаем?
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 14:47     Возведение в степень #27
Цитата Сообщение от Nameless One Посмотреть сообщение
Thinker, ты с http://www.cyberforum.ru/cgi-bin/latex.cgi?10^n не путаешь, случаем?
Неа, это двоичный формат!
Nameless One
09.10.2011, 14:57
  #28

Не по теме:

а, ну тогда все ок

demik991
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 15
26.12.2011, 08:20     Возведение в степень #29
вот мой псевдо двуядерний, 2 гига оперативки ( и пока ище криворукость в написании кода на С ) потребовал на раздумия 5 с половиной минут и таки вывел результат (думал не дождусь). При етих результатах уверен что можна оптимизировать и достичь куда лудших результатов.

Добавлено через 5 минут
Цитата Сообщение от alkagolik Посмотреть сообщение
вы представляете себе агрегат, который в состоянии вычислить
у меня такой имееться, канечно не напрямую, а так как я думал и так как здесь описывалось через масив

Добавлено через 59 минут
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
29
int p[35000],n,i,j,h,t;
 
for(int k = 0; k<35000; k++)
p[k]=0;
 
t=0;
h=0;
p[0]=1;
 
cout<< "Enter power of 2: ";
cin>>n;
 
if (n==0) p[0]=1;
else
{
   for(i=0; i<n; i++)
   for(j=0; j <= h; j++)
   {
 
       p[j]*=2;
       if (t>0) {p[j]+=t; t=0;}
       if(p[j]/1000000000>0)
       {
            t=p[j]/1000000000;
            p[j]=p[j]%1000000000;
            if(p[j+1]<=0)    h++;
        }
   }
}
вот мое детище, но зато как на меня тут просматриваеться алгоритм действий
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.12.2011, 15:27     Возведение в степень #30
Цитата Сообщение от Nameless One Посмотреть сообщение
real* * 0m0.271s
Таки С быстрее.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
diagon@shadeware:~$ cat test.cpp
#include <stdio.h>
#include <gmp.h>
 
int main()
{
    FILE *out = fopen("output.txt", "w");
    
    mpz_t a;
    mpz_init(a);
    mpz_ui_pow_ui(a, 2, 1000000);
    mpz_out_str(out, 10, a);
}
diagon@shadeware:~$ gcc test.cpp -lgmp -O3 && time ./a.out
 
real    0m0.109s
user    0m0.104s
sys 0m0.000s
Т.е. за 0.1 секунду считает.
Причем почти все время уходит на вывод в файл, если вывод закомментить, то прога будет выполняться 0.001 секунду.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2011, 01:41     Возведение в степень
Еще ссылки по теме:

Возведение в степень - C++
Подскажите почему не возводится в степень, а выдаёт ошибку:&quot;arguments to function: double pow( double, double)&quot; Код:#include &lt;iostream&gt; ...

Возведение в степень - C++
напишите программный код для С++ Builder

Возведение в степень - C++
Здравствуйте! Есть какой то другой способ возведения в степень чем а^3 = а*а*а А если нужно в 100 степень возводить то умереть и не...

Возведение в степень - C++
дано натуральные число а и b нужно найти a^b 1&lt;=a&lt;=60, 1&lt;=b&lt;=60. Если а=60 и b=60 будет на обычных типов не поместится(очень длинный...

Возведение в степень - C++
подскажите,пожалуйста, способ реализации (алгоритм)операции возведение в степень числа с показателем более 200. Результат не должен...


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

Или воспользуйтесь поиском по форуму:
demik991
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 15
28.12.2011, 01:41     Возведение в степень #31
очень интересно, у меня если забрать вывод в консоль то програма выполняеться не 5м30сек, а 5м20сек.
надо попробовати с индийским самому, а не с библиотекой, будеть.
а вот вопросец где оно держит промежуточный результат. до 2^30 понятно, а вот 2^512 например
Yandex
Объявления
28.12.2011, 01:41     Возведение в степень
Ответ Создать тему
Опции темы

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