Данная задача находится здесь.
Условие:
Определить периметр правильного [latex] m [/latex]-угольника, вписанного в окружность радиуса [latex] R [/latex].
Входные данные:
Количество сторон правильного многоугольника [latex] m [/latex] и радиус [latex] R [/latex] описанной около него окружности.
Выходные данные:
Единственное число — периметр заданного многоугольника.
Тесты:
№ | m | R | P |
1 | 3 | 4 | 20.7846 |
2 | 6 | 5 | 30 |
3 | 8 | 13 | 79.5982 |
4 | 27 | 20 | 125.38 |
Код программы:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <cmath> using namespace std; int main(){ double m,R; cin >> m >> R; cout << 2*R*sin(M_PI/m)*m; return 0; } |
Код на сайте ideone.com можно получить здесь.
Убедиться в корректности формулы с помощью онлайн-калькулятора можно на этом сайте.
Решение:
Для решения данной задачи воспользуемся формулой для нахождения длины стороны правильного многоугольника с помощью радиуса описанной окружности: [latex]a=2\cdot R\cdot\sin{\frac{\pi}{m}}[/latex] , где [latex]R[/latex] — радиус описанной окружности, а [latex]m[/latex] — количество сторон правильного многоугольника. В задаче необходимо найти периметр, т.е. общую длину всех сторон: [latex]P=a\cdot m[/latex] . Таким образом, объединив формулы, получаем конечную формулу для нахождения периметра правильного многоугольника: [latex]P=\left(2\cdot R\cdot\sin{\frac{\pi}{m}}\right)\cdot m[/latex] , значение которой и необходимо вывести.
Источник формул : wikipedia.
(180/m) * M_PI / 180 — почему бы не сократить числитель со знаменателем? И операций меньше будет, и точность повысится, хоть и не намного.
Не отвечает…
Добавлю вопросов.
— Зачем нужна ссылка на fxyz.ru и зачем переводить в градусы если в мат библиотек радианы. Чтобы потом переводить назад в радианы? Точно не нужно.
— Вы ссылаетесь на Википедию. Там действительно есть готовая формула для длины стороны через радиус описанной окружности. Почему Вы её не используете?
Исправил ошибки, опираясь на Ваш комментарий. В решении использовал формулу, на которую ссылался, а также не переводил радианы в градусы.
Скажите, как может неправильная программа проходить все тесты?
Похоже Вы не только ошиблись с формулой, но и жульничали с тестами.
Ошибки исправлены. Проверьте, пожалуйста.
Теперь всё работает. Зачтено.