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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Последовательность цифр http://www.cyberforum.ru/cpp-beginners/thread363313.html
Задана последовательность цифр (<100). Определить размер самой длинной неубывающей цепочки чисел этой последовательности. Например: Дано:4813847899122356691393893 Результат: 8 12235669
C++ Определить нажата ли кнопка Здравствуйте. Помогите пожалуйста разобраться. Пишу программу в GUI на тему базы данных. Там имеется кнопка, назову её ButZap1 (класс QPushButton). При нажатии на кнопочку происходит связь следующего сигнала со следующим слотом: connect(ui.ButZap1, SIGNAL(clicked()), this, SLOT(showFootball())); А внутри showFootball имеется следующая запись для определения нужной мне записи базы... http://www.cyberforum.ru/cpp-beginners/thread363310.html
Помогите разобраться с типами данных C++
Здравствуйте! Размер (в байтах) объектов каких типов данных зависит от разрядности процессора?
помогите обработать массив. C++
Доброго времени суток. В общем есть задача с массивом. вывод массива я сделал: //вывод основного массива int n; int a; cout<<"vvedite N"<<endl; cin>>n; cout<<endl; for (int i=0;i<n;i++)
C++ Объединение двух массивов. http://www.cyberforum.ru/cpp-beginners/thread363284.html
Добрый день!!!! Стоит задача из двух массивов сделать один. Первый массив А {"1111111133333333"}; Второй массив В {"22224444"}; Нужно сделать массив С вида {"111111112222333333334444"}; Попытался написать, но что то намутил, на одном ПК вроде работает, на другом в том же компиляторе нет. Подскажите, пожалуйста, где ошибка?
C++ простой вопрос по с++ О всемогущие! Помогите понять почему... Итак, есть простой класс (foo) и есть производный от него класс (newFoo). Вот их определения: class foo { public: int bar( int a, int b ) { return ( a * b ); } }; #include "foo.h" class newFoo : public foo { подробнее

Показать сообщение отдельно
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 03:29
Написала программку, решающую задачу "в лоб", т.е. она действительно возводит 2 в степень 100 000 путем перемножения 2*2*2... Естественно, работает ОЧЕНЬ долго) При возведении в степень 1 млн вообще можно будет состариться)
Числа хранятся в виде массивов
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
void print(int* a, int N)
{
    for(int i=0;i<N;i++)
        cout<<a[i];
    cout<<endl;
}
 
int main()
{
    int Na=1,Nb;
    int *a;
    int *b;
    a=new int[Na];
    a[0]=2;//стартуем с 2-ки
    int perenos=0;
    int j=1;
    while(j<100000)
    {
        Nb=Na;
        if(a[0]>4)
        {
                Nb++;
        }
        b=new int[Nb];
        //b[0]=0;
        perenos=0;
        for(int i=Na-1;i>=0;i--)
        {
            b[i+Nb-Na]=(a[i]*2)%10;
                if(perenos) b[i+Nb-Na]+=perenos;
            perenos=(a[i]*2)/10;
        }
        if(Nb>Na) 
            b[0]=perenos;
        if(Nb>Na)
        {
            delete []a;
            a=new int [Nb];
        }
        Na=Nb;
        for(int i=0;i<Na;i++)
            a[i]=b[i];
        delete []b;
        j++;
    }
    print(a,Na);
    delete[]a;
}
Завтра попытаюсь реализовать алгоритм быстрого возведения в степень
Если есть какие-то мысли по оптимизации хранения числа. буду рада услышать
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru