С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

31.12.2011, 00:01. Просмотров 832. Ответов 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

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

Длинная арифметика С++ - C++
требуется написать задачу для подсчета суммы s=1^2+2^2+3^2+...+n^2 n>=20000

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

Длинная арифметика. - C++
Даны два длинных числа a и b. Найти частное и остаток при делении числа a на b. Не могу реализовать деление отрицательных чисел. Помогите...

Длинная арифметика - C++
Здравствуйте! Есть задание: Составить программу для вычисления числа: (2^64) - 1. В результате сохранить все цифры. 2^64 - это 2...

Длинная арифметика - C++
Вот условие задачи: Во время исследований, посвященных появлению жизни на планете Олимпия, учеными было сделано несколько сенсационных...

Длинная арифметика - C++
Мне дали задание с вычеслениями длинной арифметики. С мысл в том что там все действия происходят с символьными масивами. Я так и не...

4
alkagolik
Заблокирован
31.12.2011, 01:02 #2
и? непонятно что такое mpz_init()? или что? Для чего нужна MPIR? GMP не хватает? мало информации.
0
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 03:26  [ТС] #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 из одной системы счисления в другую ?
0
alkagolik
Заблокирован
31.12.2011, 13:41 #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 ] , ...);
0
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 15:39  [ТС] #5
а как мне эти числа переводить в другие системы счисления
0
31.12.2011, 15:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 15:39
Привет! Вот еще темы с ответами:

Длинная арифметика - C++
Срочно нужны исходники (функции): 1. Перевод обычного числа в длинное (массив, строка , вектор кто с чем работает) 2. Нахождение суммы...

Длинная арифметика - C++
Как сделать типы длинных чисел, например, знаковое 256-ти битное целое и 256-ти битное вещественное с 224-х битной мантиссой и 32-х битным...

Длинная арифметика - C++
Всем доброго вечера. Нужна помощь в решении задачи. Составить программу для вычисления числа: 2^64-1. В результате сохранить все...

Длинная арифметика - C++
Привет всем! помогите пожалуйста кодом. Необходимо реализовать операцию сравнения двух длинных чисел A&gt;=B Заранее спасибо


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

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

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