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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значения переменных http://www.cyberforum.ru/cpp-beginners/thread869798.html
Помогите пожалуйста, написать программку: Вычислить значения переменных, по заданной формуле. На печать вывести значение введенных данных и результаты вычислений.
C++ Структура AEROFLOT Здравствуйте. Пожалуйста напишите код программы на языке С++ по программированию. Это моя последняя лабораторная работа. С использованием средств языка С/С++ разработать и в среде MS Visual C++... http://www.cyberforum.ru/cpp-beginners/thread869790.html
Error: incompatible types in assignment of 'const char [5]' to 'char [10]' C++
Код: #include <iostream> #include <fstream> using namespace std; const int m = 10; class name {
Распечатать бинарное дерево по уровням (Поиск в ширину) C++
Поиск в ширину реализуется с помощью структуры очередь. Для этого занесем в очередь исходную вершину. Затем будем работать, пока очередь не опустеет, таким образом: выберем элемент из очереди и...
C++ Запись в файл http://www.cyberforum.ru/cpp-beginners/thread869756.html
Ребят помогите допилить запись в файл... :help: Записывает в файл лишние символы в конце! Может, можно как нибудь, реализовать запись не через бинарный сдвиг?? Например, через f1.write(decript, n)...
C++ На каком из интервалов (-∞,k1),(k1;k2),(k2;+∞) лежит точка с координатой х? Помогите пожалуйста написать программы на turbo C++. Задания простые, а я не могу((((. 2)На каком из интервалов (-∞,k1),(k1;k2),(k2;+∞) лежит точка с координатой х? k1,k2,x - произвольные числа,... подробнее

Показать сообщение отдельно
StamSvam
6 / 6 / 0
Регистрация: 08.07.2012
Сообщений: 65

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

18.05.2013, 23:58. Просмотров 551. Ответов 4
Метки (Все метки)

Уважаемые коллеги, я зашел в тупик.

Необходимо написать алгоритм возведения числа 2 в степень, подразумеваются "длинные" числа. Реализовал с помощью массивов, алгоритм - умножение столбиком.
Но тут возникла проблема. У меня ума не хватает придумать, как распараллелить данный алгоритм (код приведен ниже) и разделить его между хотя бы двумя узлами.

Подскажите, пожалуйста, как его распараллелить.

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
#include"MyMethods.h"
#include"Dos.h"
 
void main()
{
    
    int N;  
    printf("Enter the power of 2: ");
    scanf("%d", &N);   //  N - степень числа
    
    int len = 1, sum = 0, size = N/3+1; 
    int *m = new int[size], *res = new int[size];
    float timer_start, timer_end;
    VectNull(m,size); VectNull(res,size);  //пользовательская функция, заполняет массив нулями
    
    res[0]=2;
    
    for (int j=1; j<N; j++)
    {
        if (j%3==0) len++;
        CopyVect(m, res, len);      //пользовательская функция, копирует кол-во элементов из массива в массив
        VectNull(res,len);              //пользовательская функция, заполняет массив нулями
        for (int i = 0; i< len; i++)
        {
            if (m[i]*2>9) {res[i] += (m[i]*2)%10; res[i+1]=1;}  //   если происходит переполнение разряда, в
                                                                                   // следующем элементе пишется 1,а на текущей 
                                                                                   //позиции записывается младший разряд числа.
            else res[i] += m[i]*2;
        }
    }
//  в общих словах, выделяем память под весь массив "Степень/3+1", должно хватить, избыток будет до 2х 
//  элементов. Далее присваиваем первый элемент массива m равный двойке. Умножаем, результат добавляем в 
//  массив res. И так N-1 раз.
//  в итоге в массиве res хранится результат
 
    for (int i=0; i<len; i++) sum += res[i];  //вычисление суммы цифр числа (часть задания)
        
    printf("\nSum of digits = %d\n",sum);
    printf("\nTime = %f\n\n",(timer_end-timer_start)/CLOCKS_PER_SEC);
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru