Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2018, 05:19   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию возведение в степень длинная арифметика - C++

почему если я возвожу 2^32 степень то выходит 0? и как исправить
while(p) что значить это? до каких пор будет работать цикл while?


Код:
#include <iostream>
 
using namespace std;
 
 
    long pow(long x, long  p)
{
    if (x == 0 || x == 1) cout<<x;;
    long r = 1;
    while(p)
    {
        if ( p % 2 == 1)
        {
 
            r= r*x;
        }
        x = x*x;
        p = p / 2;
     
    }
    cout<<r;
}
 
 
int main(){
    long x,p,r;
cin>>x>>p;
pow(x,p);
 
}
Александр121 вне форума Ответить с цитированием
Старый 18.04.2018, 07:07   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
как исправить
Сейачас у вас до 2 ^ 31, используйте unsigned long.
Использовать long long - тогда протянете до 2 ^ 63.
waleri вне форума Ответить с цитированием
Старый 18.04.2018, 07:57   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
while(p) что значить это? до каких пор будет работать цикл while?
Именно то, что написано. Если написано "пока p не равно 0", то до каких пор цикл будет работать?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длинная арифметика Alexandr67 Помощь студентам 27 02.12.2013 11:23
длинная арифметика, возведение в степень Zibiv Помощь студентам 6 28.05.2011 23:40
Длинная арифметика на C++ Kingdom_Reborn Помощь студентам 0 06.04.2011 22:32
Длинная арифметика. Steam.dll Помощь студентам 8 03.04.2011 17:47
длинная арифметика Dimarik Общие вопросы C/C++ 1 16.09.2009 12:02