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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
08.05.2011, 12:12     Закон Амдала #1
Закон Амдала
(Время: 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++
закон отражения в ограниченой зоне на консольном приложении C++
C++ Ассоцыативный закон для квадратных матриц
задачи по темам: постоянный ток, закон Ома,несколько ЭДС в одной цепи, закон Джоуля-ленца
C++ Закон Менделеева-Клайперона
Закон кулона
C++ Найти, чья сила притяжения больше (используя закон всемирного тяготения)
C++ Закон распределения Парето (или 80\20)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 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
 Аватар для 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     Закон Амдала
Ответ Создать тему
Опции темы

Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru