Задача

Для графического изображения соотношения между различного рода величинами во многих областях человеческой деятельности используются различные графики и диаграммы. Одним из типов диаграмм является так называемая круговая диаграмма.
Исходными данными для этой диаграммы является набор чисел $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
Related Images:
Для отправки комментария необходимо войти на сайт.