Задача
Для графического изображения соотношения между различного рода величинами во многих областях человеческой деятельности используются различные графики и диаграммы. Одним из типов диаграмм является так называемая круговая диаграмма.
Исходными данными для этой диаграммы является набор чисел $a_1,\ldots, a_n, а$ диаграмма представляет собой круг радиуса $r$, разделенный на секторы. При этом каждому из чисел соответствует ровно один сектор, площадь которого пропорциональна этому числу. Общая площадь секторов равна площади круга.
Ваша задача состоит в том, чтобы по набору чисел и по радиусу круга определить площадь каждого из секторов круговой диаграммы.
Входные данные
Первая строка содержит два целых числа $n$ и $r \space (1 \leq n, r \leq 100)$. Вторая строка содержит $n$ целых чисел $a_1,\ldots, a_n \space (1 \leq a_i \leq 100$ для всех $i$ от $1$ до $n)$.
Выходные данные
Выведите $n$ вещественных чисел — площади секторов, соответствующих числам $a_1,\ldots, a_n$. Выводите каждое из чисел в отдельной строке.
Все эти числа должны быть выведены с точностью не хуже $10^{-6}$.
Тесты
Входные данные | Выходные данные |
3 2 1 4 3 |
1.570796327 6.283185307 4.712388980 |
2 3 3 8 |
7.711181968 20.563151914 |
4 5 2 5 9 1 |
9.239978393 23.099945982 41.579902768 4.619989196 |
5 9 4 16 8 20 11 |
17.252135928 69.008543713 34.504271856 86.260679641 47.443373803 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main() { int n, r, sum = 0; double S; cin >> n >> r; int *x = new int[n]; for (int i = 0; i < n; i++) cin >> x[i]; for (int i = 0; i < n; i++) sum += x[i]; S = M_PI * r * r; for (int i = 0; i < n; i++) cout << fixed << setprecision(9) << (S / sum) * x[i] << endl; return 0; } |
Решение
Найдем сперва сумму всех чисел $a_i$ и площадь диаграммы (по известной формуле площади круга). Теперь можем легко посчитать площади каждого из секторов нашей диаграммы, разделив площадь последней на ранее найденную сумму и умножив их частное на соответствующее число $a_i$.
Ссылки
Условие задачи на e-olymp
Код решения на Ideone
Исправил
По форме стало именно то, что требуется. Но по сути, там что-то странное написано.
— «…сумму всех чисел , которая будет пропорциональна площади…» Площадь зависит от заданного радиуса, а сумма от заданных чисел. Это два совершенно независимых числа. Вы составляете пропорцию в которой сумма чисел соответствует площади круга, а каждое число — площади одного из секторов.
— «посчитать минимальную возможную площадь сектора». Это я вообще не понял. Площадь сектора положительная, значит минимальной возможной площади не существует.
Убрал лишнее
Не очень честно. Я подробно объясняю, что не так, а Вы ничего не переделываете, а просто удаляете. Но формально замечаний у меня нет.