Задача. Для аккуратной расстановки шаров в «пирамидку» бильярдисты используют специальный равносторонний треугольник. Вычислите какое наибольшее количество шаров радиуса [latex]r[/latex] можно расставить на бильярдном столе при помощи треугольника со стороной [latex]a[/latex].
Входные данные.
Длина стороны [latex]a[/latex], и радиус шаров [latex]r[/latex].
Выходные данные.
Число [latex]n[/latex], количество шаров.
Изображение.
Тесты.
Входные данные | Выходные данные | ||
№ | [latex]a[/latex] | [latex]r[/latex] | [latex]n[/latex] |
1 | 2 | 0.33 | 3 |
2 | 5 | 0.33 | 19 |
3 | 10 | 1 | 8 |
4 | 10 | 2 | 2 |
5 | 10 | 2.88 | 1 |
6 | 10 | 2.90 | 0 |
7 | 10 | 3 | 0 |
Код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath> #include #include using namespace std; int main() { double a, r, S, S1; //Для большей точности подсчётов берём все значения типа double int n; //Число шаров может быть только целым cin >> a >> r; //Вводим длинну стороны a, и радиус шара r S=(a^2*sqrt(3))/4; //посчитаем площадь Большого треугольника S1=3*sqrt(3)*r^2; //Выводим значение площади маленького треугольнка в который вписан наш шар n=S/s; //Разделив площадь большого треугольника на площадь маленького получим число шаров cout << n; return 0; } |
Решение.
Для решения данной задачи нужно понимать что каждый шар занимает пространство вокруг себя которое равняется площади описанного вокруг данного шара треугольника. Чтобы посчитать количество шаров вмещаемых в треугольник надо воспользоваться формулой площади равностороннего треугольника через сторону для большого треугольника [latex]S=\frac{a^2\sqrt3}{4}[/latex] , и соответственно формулой площади треугольника в который вписан круг основываясь на радиус [latex]S1=3\sqrt3x^2[/latex]. В результате деления данных формул получим количество шаров радиуса [latex]r[/latex] которые поместятся в Треугольника со стороной [latex]a[/latex].
Ссылка на условие задания: https://cpp.mazurok.com/mtasks/
Ccылка на решение задачи на сайте Ideon.com http://ideone.com/3LTMnW
Хорошо, но есть мелкие замечания.
— Не используйте символы кириллицы в постоянных ссылках. Это часто создаёт проблемы.
— Добавьте ключевые слова для поисковых машин (метки).
— S1 это так — [latex]S_1[/latex].
И одно существенное замечание
— Вы пишите «нужно понимать что каждый шар занимает пространство вокруг себя которое равняется площади описанного вокруг данного шара треугольника». Чтобы это понять нужно сначала это доказать или хоть как-то обосновать. Вы очень хорошо свели трёхмерный случай к плоскому, но дальше нужно обосновывать рассуждения. Кстати, задача, которую Вы решаете относится к группе задач на упаковку кругов на плоскости (Circle packing). Она стоит того, чтобы поискать информацию в сети или в журналах «Квант».