у меня возникли некоторые проблемы с одной задачей.Вот краткое условие:
Есть дерево, по которому бежит белка по спирали. За один виток она поднимается на h, высота дерева равна H, длина окружности дерева равна S. Какое расстояние преодолеет белка?Вводные данные должны быть числами целого типа
Пример: h=4, H=16, S=3;
Результат: 20.0000
Я пытался развязать разными способами:
Искал диаметр дерева(d=2*(S/(2*M_PI)));.Потом за формулой l=sqrt(h*h+(M_PI*d)^2) искал длину одного витка. Нашел количество витков(H/h). Потом умножал количество на l;
Считал дерево как цилиндр, на котором есть винтовая линия. Как бы развертывал этот цилиндр, и по сути у меня получался прямоугольник со сторонами H и S, а также диагональ.Снова нашел количество витков, умножил на S и искал по формуле диагональ d=sqrt((H*H)+(Sk*Sk));
#include <stdio.h>
#include <math.h>
int main() {
int h, H, S;
scanf("%i %i %i", &h, &H, &S);
float d,k,l;
k=H/h;
d=sqrt((h*h)+(S*S));
l=d*k;
printf("%.4f", l);
}
S*H
(S,h)
H/h * len(S,h)
= H/h * sqrt(S*S+h*h)
20
ровноPS: Деление надо выполнять в дробных числах, не целых.
За один оборот (виток) вокруг дерева белка по горизонтали (по горизонтальной окружности) проходит 3
, а по вертикали 4
. Расстояние по теореме Пифагора 5
. Поднимется до верха за 16 / 4 = 4
витка. Пройдет 4 * 5 = 20
.
Вы, главное, ни в коем случае не показывайте нам Ваш код. Мы будем гадать, что в нем не так. Это такая игра.
Справа от знака =
- целочисленное вычисление:
k=H/h;
Надо:
k = (1.0 * H) / h;
Отметьте ответ Qwertiy как правильный. Он угадал раньше.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ajax запрос выполняется на основном домене http://site-ru/ (локальный сервер), но не выполняется на поддомене http://subsite-ru/