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

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

Войти
Регистрация
Восстановить пароль
 
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
#1

Одномерный массив в MPIR (длинная арифметика) - C++

31.12.2011, 00:01. Просмотров 744. Ответов 4
Метки нет (Все метки)

Не получается записать длинные числа в массив
Есть таблица значений функции
1 4
2 32
3 344
4 4460
5 66532
6 1118398
7 20984924
8 437500380
9 10105541204
10 257860425672
11 7241521734020
12 222770819826574
13 7466859257161488
14 271156951835070930
15 10609740515840572076
16 444982726973034212924
17 19911203110764903275188
18 946564783226311159219150
19 47631429404674467307773380
20 2528751817754976349706118326
21 141230550945276570635100088392
22 8276355199785795726294608142184
23 507729501918803287606319351173352
24 32538850685220441627440374250456290
25 2174335830863749936724371980412536172
26 151236326399950056297298993112649900850
27 10932105410468612099036188735215153271496
28 820044457045734108109109406561277222219168
29 63748873475180955339832071132429388775557556
30 5129407130436863270233731521113990193730440354
31 426694523629297006422022284190667711775649380560
и надо правый столбец записать в одномерный массив типа mpz

что-то ничего в документации не пойму
как это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2011, 00:01     Одномерный массив в MPIR (длинная арифметика)
Посмотрите здесь:

Длинная арифметика - C++
нужен текст програмы на С, в которой был бы реализован алгоритм ввода-вывода длинного числа, разности двух длинных чисел и их сравнение.

сложение(длинная арифметика) - C++
Нашел небольшой кусочек кода в интернете: реализация сложения с помощью массивов. Решил это дело все потестировать и в итоге, как мне...

Длинная арифметика производных - C++
можете мне написать код на с++ или алгоритм? заранее спасибо

Длинная арифметика. Сложение - C++
Есть класс BigInt со скрытыми переменными uint32* m_integer и uint32 m_length, которые отвечают за само число и его длину соответственно. Я...

Перевод в 18 СС. Длинная арифметика - C++
Здравствуйте. Столкнулась с такой проблемой, как переводом длинного числа из 10 СС в 18 СС. Длинные числа реализованы с помощью массива. ...

длинная арифметика деление - C++
имеется два обьекта, которые представляют собой массивы чисел вопрос: как реализовать деление этих массивов друг на друга каков...

Факториал (Длинная арифметика) - C++
Требуется вычислить факториал целого числа N. Входные данные В единственной строке входного файла INPUT.TXT записано одно целое...

Длинная арифметика. Факториал - C++
Придумать алгоритм факториала, не сложно, для 1-14. Но дальше не знаю как сделать длинную арифметику для больших чисел. Подскажите...

Длинная арифметика, деление - C++
Нужно составить программу для деления числа а на число b. Оба числа многозначные. Может кто то писал уже такую программу. Желательно на...

Длинная арифметика, вектор - C++
Решил побаловаться в с++ и найти 45^51 Вот такой код#include<iostream> #include<vector> #include<conio.h> using namespace std; void...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
31.12.2011, 01:02     Одномерный массив в MPIR (длинная арифметика) #2
и? непонятно что такое mpz_init()? или что? Для чего нужна MPIR? GMP не хватает? мало информации.
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 03:26  [ТС]     Одномерный массив в MPIR (длинная арифметика) #3
mpir потому что пишу в msvs
синтаксис и функционал gmp вроде те же

не понятно что вобще надо делать
как создать массив понятно
а записать в него эти числа не пойму - длиннее 10 цифр не принимает почему то

Добавлено через 40 минут
вот как я делаю
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 "stdafx.h"
#include "iostream"
#include "mpirxx.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    mpz_t Array[31];
    mpz_array_init(Array[0], 31, 1024);
 
    mpz_set_str(Array[0], "4", 10);
    mpz_set_str(Array[1], "32", 10);
    mpz_set_str(Array[2], "344", 10);
    mpz_set_str(Array[3], "4460", 10);
    mpz_set_str(Array[4], "66532", 10);
    mpz_set_str(Array[5], "1118398", 10);
    mpz_set_str(Array[6], "20984924", 10);
    mpz_set_str(Array[7], "437500380", 10);
    mpz_set_str(Array[8], "10105541204", 10);
    mpz_set_str(Array[9], "257860425672", 10);
    mpz_set_str(Array[10], "7241521734020", 10);
    mpz_set_str(Array[11], "222770819826574", 10);
    mpz_set_str(Array[12], "7466859257161488", 10);
    mpz_set_str(Array[13], "271156951835070930", 10);
    mpz_set_str(Array[14], "10609740515840572076", 10);
    mpz_set_str(Array[15], "444982726973034212924", 10);
    mpz_set_str(Array[16], "19911203110764903275188", 10);
    mpz_set_str(Array[17], "946564783226311159219150", 10);
    mpz_set_str(Array[18], "47631429404674467307773380", 10);
    mpz_set_str(Array[19], "2528751817754976349706118326", 10);
    mpz_set_str(Array[20], "141230550945276570635100088392", 10);
    mpz_set_str(Array[21], "8276355199785795726294608142184", 10);
    mpz_set_str(Array[22], "507729501918803287606319351173352", 10);
    mpz_set_str(Array[23], "32538850685220441627440374250456290", 10);
    mpz_set_str(Array[24], "2174335830863749936724371980412536172", 10);
    mpz_set_str(Array[25], "151236326399950056297298993112649900850", 10);
    mpz_set_str(Array[26], "10932105410468612099036188735215153271496", 10);
    mpz_set_str(Array[27], "820044457045734108109109406561277222219168", 10);
    mpz_set_str(Array[28], "63748873475180955339832071132429388775557556", 10);
    mpz_set_str(Array[29], "5129407130436863270233731521113990193730440354", 10);
    mpz_set_str(Array[30], "426694523629297006422022284190667711775649380560", 10);
 
 
    for (int i=0; i<31; i++)
    {
        cout << Array[i] << endl;
    }
    system("pause");
    return 0;
}
а можно ли как-нибудь скопировать числа из строкового массива в mpz в цикле ?

Добавлено через 2 минуты
и еще очень интересно — как переводить mpz из одной системы счисления в другую ?
alkagolik
Заблокирован
31.12.2011, 13:41     Одномерный массив в MPIR (длинная арифметика) #4
Цитата Сообщение от Coyote112358 Посмотреть сообщение
mpir потому что пишу в msvs
убил
вот это чепуха.
Цитата Сообщение от Coyote112358 Посмотреть сообщение
C
1
2
3
for (int i = 0; i < 31; i ++ ) {
    cout << Array[i] << endl;
}
i\o в библиотеках реализованы как самостоятельные функции. Читайте документацию, там кстати и форматы вывода есть.
Цитата Сообщение от Coyote112358 Посмотреть сообщение
а можно ли как-нибудь скопировать числа из строкового массива в mpz в цикле ?
да,
C
1
2
3
4
char **strarray;
...
while ( i < size )
    mpz_set_str(Array[i], strarray[ i ] , ...);
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 15:39  [ТС]     Одномерный массив в MPIR (длинная арифметика) #5
а как мне эти числа переводить в другие системы счисления
Yandex
Объявления
31.12.2011, 15:39     Одномерный массив в MPIR (длинная арифметика)
Ответ Создать тему
Опции темы

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