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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
#1

Закон Амдала - C++

08.05.2011, 12:12. Просмотров 1953. Ответов 2
Метки нет (Все метки)

Закон Амдала
(Время: 1 сек. Память: 16 Мб Сложность: 23%)

Параллельное программирование изучает методы построения программ, которые будут выполняться на нескольких процессорах. В результате решения одной из первых задач этого раздела информатики появился закон Амдала.

Задача Амдала формулировалась так. Имеется n процессоров и p процентов вычислений не могут выполняться параллельно. Во сколько раз быстрее можно выполнить вычисления по сравнению с одним процессором?

Например, если n = 10, p = 50, а на одном процессоре все вычисления выполняются за время t. Тогда первая половина вычислений (50%) будет выполнена за время t/(2•10) , а вторая - за время t/2. Общее время вычислений в этом случае составит t/2 + t/20 = 11•t/20, а ускорение по сравнению с одним процессором составит 20/11 раза.

Если же n = 10, p = 25, и на одном процессоре все вычисления выполняются за время t. Тогда 75% вычислений будут выполнены за время 3•t/(4•10) , а оставшиеся 25% - за время t/4 . Общее время вычислений в этом случае составит t/4 + 3•t/40 = 13•t/40, а ускорение по сравнению с одним процессором составит 40/13 раза.

Даны числа n и p. Напишите программу, решающую задачу Амдала.
Входные данные

Входной файл INPUT.TXT содержит 2 целых числа n и p. (1 <= n <= 1000, 0 <= p <= 100).
Выходные данные

В выходной файл OUTPUT.TXT выведите ответ на задачу с точностью, не меньшей 10-6.
Примеры
INPUT.TXT
10 50
OUTPUT.TXT
1.818181818

INPUT.TXT
10 25
OUTPUT.TXT
3.076923077

INPUT.TXT
1000 100
OUTPUT.TXT
1.000000000
Не могу понять как это высчитывается...помогите разобраться.

Добавлено через 36 минут
нашел формулу, но не подходит
C++
1
s = 1 / (p + (1 - p) / n);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2011, 12:12     Закон Амдала
Посмотрите здесь:

Закон Менделеева-Клайперона - C++
Программа для Закона Менделеева-Клайперона, определяющую один из параметров давление, занимаемый объем, температура, газа при изохорном,...

Показательный закон распределения - C++
Подскажите не пойму почему нестабильно работает рандом, т.е. вроде первые значений 20-15 нормально выдает, а потом проходит 1 и тоже чисто....

Закон распределения Парето (или 80\20) - C++
Проблема следующего характера: при построении таблицы в Excel нужно сосчитать итоговую сумму (т.е. сумму всех чисел, как факты), но в...

Ассоцыативный закон для квадратных матриц - C++
Даны две квадратные матрицы одного порядка А и В. Показать, что для них действут ассоциативный закон, т.е. А * В = В * А. в случае...

Закон отражения в ограниченой зоне на консольном приложении - C++
Честно скажу, с++ впервые увидел в январе, понимаю 7е очень много, но более менее, пишу программу нужно задать с терминала размер поля в...

Генератор случайных чисел, закон распределения задан - C++
Генерация случайных чисел заданным законом распределения. Разработать алгоритм генерации случайных чисел заданным законом...

Найти, чья сила притяжения больше (используя закон всемирного тяготения) - C++
Задача 2: Входные данные: Во входном файле содержатся два целых числа, разделенных пробелом – X  (0  &lt;  X  &lt;  384000) и Y (−100000 ...

Закон распределения - Теория вероятностей
Случайная величина Х задана функцией распределения: F(x)=\begin{cases} 0&amp; \text{ if } x\lt 0 \\ 0.5(x-1)&amp; \text{ if } 1\leq x\leq 3 \\...

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

Закон Ома - Электротехника
Найти токи и напряжения на всех участках, если приложенное напряжение U=280 в. R1= 20 Ом, R2= 60 Ом, R3= 300 Ом. Просто...

Закон ома - Электротехника
Чему равна разность потенциалов между клеммами в схеме? Что покажет амперметр если его подключить к клеммам?

Закон Ома - Электротехника
Нужно записать закон Ома для активной ветви. Вопрос в том, как правильно записать e(t)? Как E умноженное на корень из 2?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.05.2011, 12:50     Закон Амдала #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    double n,p;
    std::cin >> n >> p;
    if (p) std::cout << std::fixed << std::setprecision(9) << 100/(p+(100-p)/n);
          else std::cout << n;
    std::cin.get();
    return 0;
}
Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
08.05.2011, 13:05  [ТС]     Закон Амдала #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main() {
    float p, n, s;
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    cin >> n >> p;
    s = 1 /((p/100) + ((100-p)/(100*n)));
    printf("%0.9f", s);
    system("pause >> void");
    return 0;
}
чуток не сходилось с ответом)

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main() {
    float p, n, s;
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    cin >> n >> p;
    s = 1 / ((p / 100) + ((100 - p) / (100 * n)));
    printf("%0.9f", s - 0.000000054);
    return 0;
}
решение прошло все тесты =)))))
Yandex
Объявления
08.05.2011, 13:05     Закон Амдала
Ответ Создать тему
Опции темы

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