Из олимпиады

CMTV

Основатель
Администратор
1,304
4
601
c7a75ed9d1c5bbfa1e4141bcff09a918.png


Я бился до конца. Решение где-то в одном шаге, но я просто замучился да и делами надо заниматься)
 
60
0
20 градусов
Большинство углов нашел cmtv, спасибо ему.
Обозначения вершин: 
11f8089e044b154d7301c5c4c53cf6606a151a5c.jpg

Запишем три теоремы sin:
△ADE: AD/sinx = DE/sin10
△ADB: DB/sin(10+70) = AD/sin60
△EDB: ED/sin20 = DB/sin(30+x)
Перемножим эти три уравнения:
sinx*sin80*sin20=sin10*sin60*sin(30+x)
Нигма, тварь такая, это уравнение решать отказалась, поэтому воспользуемся jav'ой:
double min = 2;
double minX = -1;

for (double x = 0; x < 90; x += 1)
{
double difference = Math.abs((sin(x) * sin(80) * sin(20)) - (sin(10) * sin(60) * sin(x + 30)));
if (difference < min)
{
min = difference;
minX = x;
}
}
System.out.println(String.format("%s %s", min, minX));

Вывод:
1.3877787807814457E-17 20.0

-17 степень - это очень большая точность, следовательно x = 20 градусов
 
1,990
18
105
dimka написал(а):
for (double x = 0; x < 90; x += 1)
Незя так. В Math sin и cos принимают угол в радианах, не в градусах.
Так что
Код:
for (double x = 0; x < Math.PI*2; x += Math.PI/180);

С углами тоже. Есть функция Math.toRadians, её надо использовать.
P.S. 20 не очень похоже на правду.
Ибо тогда нижний угол + этот = 70, а третий явно острый, там тупого, тем более в 110 градусов быть не может.
 
60
0
Oldestkon написал(а):
dimka написал(а):
for (double x = 0; x < 90; x += 1)
Незя так. В Math sin и cos принимают угол в радианах, не в градусах.
Так что
Код:
for (double x = 0; x < Math.PI*2; x += Math.PI/180);

С углами тоже. Есть функция Math.toRadians, её надо использовать.
P.S. 20 не очень похоже на правду.
Ибо тогда нижний угол + этот = 70, а третий явно острый, там тупого, тем более в 110 градусов быть не может.
1)Можно. просто я не написал, что
public double sin(double x)
{
    return Math.sin(x / 180 * Math.PI);
}
2) Еще как похоже. Если честно, по транспортиру нарисовать, то будет видно, что ∠EDB тупой
 
Боковые стороны можно приравнять к любому числу, кроме нуля, так как известны углы можно вычислить основу треугольника, затем по сторонам можно без проблем добраться до треугольника с искомым углом и высчитать его, всегда будет 20 градусов. Ну это если не хочется решать тригонометрическое уравнение, которое составил dimka
 
Сверху