Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Jim
0 / 0 / 2
Регистрация: 04.05.2014
Сообщений: 57
#1

Посчитать 2 в степени целого длинного числа - C++

28.09.2014, 08:07. Просмотров 1866. Ответов 23
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
int main()
{
    int i;
    double long  N,a;
    a=2;//Возводимое в степень число
    cin>>N; // Cтепень возведения
 
    for(i=1;i<=N-1;i++)
        a*=2;
    cout<<a;
system("pause");
return 0;
}
Возводит в степень пятизначного числа. Дальше не возводит. Нужно, чтобы возводил в 9-значное и дальше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2014, 08:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Посчитать 2 в степени целого длинного числа (C++):

Как вычислить 2 в степени длинного числа?
Посчитать 2 в степени длинного числа.

Инвертировать младший байт длинного целого числа
записать выражение,которое инвертирует младший байт этого числа!!!как???

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

Определить число единиц в каждом байте длинного целого числа N
Задали сделать программу:Определить число единиц в каждом байте длинного целого...

Написать группу перегруженных функций, которые возвращают модуль целого, длинного целого
Вот задали в Университете написать програмки кому может пригодятся ришал,даю...

Программа постоянно печатает степени целого числа 2
Напишите программу, которая постоянно печатает степени целого числа 2, ...

23
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
28.09.2014, 08:49 #2
C++ (Qt)
1
unsigned long long
попробуй
ну или
C++
1
std::cout<<pow(2,n);
0
Jim
0 / 0 / 2
Регистрация: 04.05.2014
Сообщений: 57
28.09.2014, 09:45  [ТС] #3
Не работает. В первом случае пишет 0, во втором ошибку.
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
28.09.2014, 09:57 #4
тогда тебе нужна длинная арифметика, в библиотеке crypto++ есть класс Integer
0
MakcPletnev
21 / 21 / 4
Регистрация: 01.02.2014
Сообщений: 450
Записей в блоге: 1
28.09.2014, 10:03 #5
Jim, ойейей, что за код. Есть же функция возведения числа в степень.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
int main()
{
unsigned long long N, a, a2;
a=2;//Возводимое в степень число
cin>>N; // Cтепень возведения
 
a2 = pow(a, N);
cout << a2;
system("pause");
return 0;
}
Добавлено через 2 минуты
Если pow ошибка, то подключи библиотеку
C++
1
#include <math.h>
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
28.09.2014, 10:18 #6
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Jim, ойейей, что за код. Есть же функция возведения числа в степень.
ULLONG вмещает 2^100, а в 9999 9999 9 ???
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
28.09.2014, 10:32 #7
Цитата Сообщение от MakcPletnev Посмотреть сообщение
ойейей, что за код. Есть же функция возведения числа в степень.
И правда. И зачем только придумали длинную арифметику, есть же функция возведения числа в степень..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
int main()
{
    unsigned long long N, a, a2, a3;
    a = 2;//Возводимое в степень число
    cin >> N; // Cтепень возведения
 
    a2 = pow(a, N);
    cin >> N;
    a3 = pow(a, N);
    cout << a2 << endl << a3 << endl;
    system("pause");
    return 0;
}
Посчитать 2 в степени целого длинного числа
0
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
28.09.2014, 10:38 #8
KOPOJI, В VS 2008 нет функции pow(long long,long long):
d:\current\cpp\test\tset.cpp(16) : error C2668: pow: неоднозначный вызов перегруженной функции
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(575): может быть 'long double pow(long double,int)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(573): или 'long double pow(long double,long double)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(527): или 'float pow(float,int)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(525): или 'float pow(float,float)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(489): или 'double pow(double,int)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(123): или 'double pow(double,double)'
1> при попытке сопоставить список аргументов '(unsigned __int64, unsigned __int64)'
Т.е. есть возведение плавающего в плавающую степень,
есть плавающее в целую степень,
а вот целое в целую нет.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
28.09.2014, 10:48 #9
zss, ее вообще вроде нет..
Предупреждение 1 warning C4244: =: преобразование "double" в "unsigned __int64", возможна потеря данных c:\users\user\documents\visual studio 2013\projects\test\test\test.cpp 12 1 test
Только не в этом дело. Код я просто скопировал да добавил еще одну строку для сравнения..
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
28.09.2014, 11:10 #10
ТС, объясните, пожалуйста, зачем надо взводить 2 в long int? В природе нет таких чисел (число атомов во вселенной много меньше).
0
Jim
0 / 0 / 2
Регистрация: 04.05.2014
Сообщений: 57
28.09.2014, 11:28  [ТС] #11
Задание такое дали.

Добавлено через 2 минуты
И вообще выдает такую ошибку:[bcc32 Error] File1.cpp(14): E2015 Ambiguity between 'std:: pow(double,double) at c:\program files (x86)\embarcadero\rad studio\11.0\include\windows\crtl\math.h:217' and 'std:: pow(long double,int) at c:\program files (x86)\embarcadero\rad studio\11.0\include\windows\crtl\math.h:407'
0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
28.09.2014, 11:39 #12
Цитата Сообщение от zer0mail Посмотреть сообщение
В природе нет таких чисел (число атомов во вселенной много меньше).
В природе и компьютеров нет. Их люди придумали. Решил загуглить "число атомов во Вселенной", и нашел вот это, ещё раз доказывающее, что не только атомы можно считать.

По теме: без того или иного варианта длинной арифметики не обойтись. Хотя учитывая ограниченность операций (только лишь возведение двойки в степень) можно вероятно предложить и упрощенную реализацию.
1
Jim
0 / 0 / 2
Регистрация: 04.05.2014
Сообщений: 57
28.09.2014, 12:16  [ТС] #13
KOPOJI, И вообще выдает такую ошибку:[bcc32 Error] File1.cpp(14): E2015 Ambiguity between 'std:ow(double,double) at c:\program files (x86)\embarcadero\rad studio\11.0\include\windows\crtl\math.h:217' and 'std:ow(long double,int) at c:\program files (x86)\embarcadero\rad studio\11.0\include\windows\crtl\math.h:407'
0
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
28.09.2014, 12:22 #14
Цитата Сообщение от Jim Посмотреть сообщение
вообще выдает такую ошибку
Еще раз намекаю - нет функции возведения целого в целое.
Приведите первый параметр к double.
C++
1
a2 =(unsigned long long) pow(2.0, N);
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
28.09.2014, 22:40 #15
Jim, причем тут я? Я взял код из сообщения выше, добавил еще одну переменную и показал ошибочность подобного вычисления на примере.

З.Ы. bigPower.zip

Взято отсюда http://www.pvsm.ru/algoritmy/29587
Результат возведения двойки в степень 21000
Посчитать 2 в степени целого длинного числа
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
29.09.2014, 00:35 #16
Цитата Сообщение от MousePro Посмотреть сообщение
2^100
Вообще-то максимальная степень 2, которую может отобразить unsigned long long int - это 63-ая степень.
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
29.09.2014, 13:19 #17
Цитата Сообщение от Dani Посмотреть сообщение
Вообще-то максимальная степень 2, которую может отобразить unsigned long long int - это 63-ая степень.
2^64 - 1 вообще то, если учитывать степень то ты прав
0
Миниатюры
Посчитать 2 в степени целого длинного числа  
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
29.09.2014, 13:29 #18
MousePro, так я и акцентировал на том, что максимальная степень 2, которую может отобразить unsigned long long int - это 63-ая степень двойки. Это не максимальное значение типа.
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
29.09.2014, 13:30 #19
Цитата Сообщение от Dani Посмотреть сообщение
MousePro, так я и акцентировал на том, что максимальная степень 2, которую может отобразить unsigned long long int - это 63-ая степень двойки.
Я понял, не кричи только. Ну а вообще, все почему то не вникают в суть темы, а отвечают на какие то отдельные сообщения... ДУмаю если бы ты прочитал первые 5 постов ты бы мне не писал сколько она вмещает.
0
Байт
Эксперт C
17775 / 11800 / 2451
Регистрация: 24.12.2010
Сообщений: 23,723
29.09.2014, 13:34 #20
Но если всетки нужны длинные числа, вот пожалуйста
http://www.cyberforum.ru/cpp-beginners/thread1264628.html
0
29.09.2014, 13:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 13:34
Привет! Вот еще темы с решениями:

Написать рекурсивную функцию для вычисления натуральной степени заданного целого числа
Рекурсия. Помогите исправить программу: Напишите рекурсивную функцию для...

Посчитать количество цифр целого неотрицательного числа n
#include &lt;iostream&gt; using namespace std; int main() { unsigned long int...

посчитать и вывести на экран количество целого и десятичного числа
Помогите пожалуйста с заданием Посчитать и вывести на экран количество...

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5...


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

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

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