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

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

Войти
Регистрация
Восстановить пароль
 
Monster-Lock
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 9
#1

Остаток от деления больших чисел в массивах - C++

27.04.2013, 22:42. Просмотров 493. Ответов 0
Метки нет (Все метки)

Пытаюсь реализовать полностью рабочий шифр Диффи-Хеллмана. Возведение в большую степень реализовал, но вот как реализовать получение остатка от деления - не знаю. Были мысли делить поразрядно, но это слишком трудоемко, по моему мнению. Поэтому прошу вашей помощи, как можно реализовать остаток от деления двух больших чисел, содержащихся в массивах? И еще, в коде есть одна неточность, из-за которой в произведении получается много нулей, а уже потом идет само произведение. Я знаю, что это из-за
C++
1
sizeRez
, но как вычислить именно то значение sizeRez, чтобы оно идеально подходило? Код не совсем маленький, поэтому спрячу его под спойлер.
Кликните здесь для просмотра всего текста

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
    int shift=0, temp, firstNumVal, numVal, sizeRez, countNum;
    string firstNum, secondNum, rezfirst, rezsecond;
    firstNum="11";
    secondNum="11";
    ostringstream ss;
    for (int k=1; k<100; k++)
    {
    sizeRez=firstNum.length()+secondNum.length();
    int* product = new int  [sizeRez];
    memset(product, 0, sizeRez*sizeof(int));
    for (int f=firstNum.length(); --f>=0;)
    {
        firstNumVal=firstNum[f]-'0';
        countNum=shift;
        for (int s=secondNum.length(); --s>=0;)
        {           
            numVal=firstNumVal*(secondNum[s]-'0');
            product[countNum]    += numVal%10;
            if (product[countNum]>=10) 
                {product[countNum]-=10; ++product[countNum+1];}
            product[countNum+1]  += numVal/10;
            if (product[countNum+1]>=10) 
                {product[countNum+1]-=10;; ++product[countNum+2];}
            ++countNum;
        }
        ++shift;
    }
    shift=0;
    countNum=0;
    firstNum.clear();
    ss.str(string());
    for (int i=sizeRez; --i>=0;){
        ss<<product[i];
        product[i]=0;
    firstNum=ss.str();
    }
    }
    for (int i=95; i<sizeRez; i++)
    {
        rezfirst[i-95]=firstNum[i];
        cout<<firstNum[i];
    }
    cout<<endl<<endl;
    firstNum="2";
    secondNum="2";
    for (int k=1; k<256; k++)
    {
    sizeRez=firstNum.length()+secondNum.length();
    int* product = new int  [sizeRez];
    memset(product, 0, sizeRez*sizeof(int));
    for (int f=firstNum.length(); --f>=0;)
    {
        firstNumVal=firstNum[f]-'0';
        countNum=shift;
        for (int s=secondNum.length(); --s>=0;)
        {           
            numVal=firstNumVal*(secondNum[s]-'0');
            product[countNum]    += numVal%10;
            if (product[countNum]>=10) 
                {product[countNum]-=10; ++product[countNum+1];}
            product[countNum+1]  += numVal/10;
            if (product[countNum+1]>=10) 
                {product[countNum+1]-=10;; ++product[countNum+2];}
            ++countNum;
        }
        ++shift;
    }
    shift=0;
    countNum=0;
    firstNum.clear();
    ss.str(string());
    for (int i=sizeRez; --i>=0;){
        ss<<product[i];
        product[i]=0;
    firstNum=ss.str();
    }
    }
    for (int i=178; i<sizeRez; i++)
    {
        rezsecond[i-178]=firstNum[i];
        cout<<firstNum[i];
    }
 
    cout<<endl; system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 22:42     Остаток от деления больших чисел в массивах
Посмотрите здесь:

Определить, имеется ли остаток от деления двух чисел - C++
Проверьте пожалуйста правильно ли я понял и решил задание. Вот задача: Введите с клавиатуры два числа a и b Если остаток от деления a/b...

Найти остаток от деления двух натуральных чисел - C++
1) Найти остаток от деления двух натуральных чисел. При решении задачи составить схему программы и реализовать программу на языках С++

Указать те из чисел последовательности, у которых остаток от деления на М равен L - C++
Даны целые числа A1,A2,....Аn. Указать те из них, у которых остаток от деления на М равен L (0&lt;L&lt;M - 1). Задание - Сформировать...

Вывести остаток от деления НОД чисел F(i) и F(j) на 10^9. (F - Число Фибоначчи) - C++
Последовательностью Фибоначчи называется последовательность чисел F0 = 0, F1 = 1, … , Fk = Fk-1 + Fk-2, (k &gt; 1). Требуется найти...

Как найти остаток от деления чисел с плавающей точкой? - C++
Приветствую. Есть код: for(int i=0;i&lt;n;i++) { if(mas%2.0==0.0) { t++; } } Пишет что операция &quot;%&quot; невозможна,...

Проверить, равен ли остаток от деления A на B одному из заданных чисел (Pascal -> C++) - C++
if (A mod B = R) or (A mod B = S) then WriteLn('Действительно, остаток равен ', A mod B) else WriteLn('Остаток не равен ни одному из...

Дан массив натуральных чисел. Указать те, у которых остаток от деления на М равен L (0<L<M-1). - C++
Дан массив натуральных чисел. Указать те, у которых остаток от деления на М равен L (0&lt;L&lt;M-1).

Определить, равен ли остаток от деления целых положительных чисел заданному числу - C++
Определить верно ли что при делении неотрицательного целого числа a на положительное целое число b получается остаток,равный числу c....

Написать программу, расщепляющую упорядоченный линейный список целых чисел на три упорядоченных списка - имеющих остаток от деления на 3, ра - C++
Написать программу, расщепляющую упорядоченный линейный список целых чисел на три упорядоченных списка - имеющих остаток от деления...

Остаток от целочисленного деления - C++
Всем привет) Только начинаю программировать на С++, поэтому иногда сталкиваюсь с ошибками в коде, которые не могу найти Вот и в этой...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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