Блог пользователя DELETED02

Автор DELETED02, 14 лет назад, По-русски

Добрый день! Здесь я написал другой разбор задачи "С" с CBR #1 

Во первых найдем радиус описанной окружности нашего треугольника, это есть радиус искомого n-угольника. Обозначим радиус описанной окружности через R. Тогда R = abc / 4S,  где a, b, c - стороны треугольника, S - площадь треугольника. Найдем все углы етого треугольника и обозначим их как A, B, C. Углы A, B, C можно найти по этой формуле:
A = acos((b2 + c2 - a2) / (2bc))), анологично вычисляются B, C. Теперь найдем n.Находим его вот так: n = pi / gcd(A, B, C). Теперь нам известны R и n, при помощи которых мы можем найти площадь n-угольника по этой формуле: n / 2 * R2 * sin(2pi / n).


Отметим, что gcd(A,B,C) = gcd(gcd(A, B), C)
а функция gcd(x, y) можно вычислить так:


double gcd(double x, double y) {
    while (fabs(x) > eps && fabs(y) > eps) {
        if (x > y)
                x -= floor(x / y) * y;
        else
                y -= floor(y / x) * x;
    }
    return x + y;
}

//eps = 1e-4

  • Проголосовать: нравится
  • -3
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Разбор задач первого раунда уже был.
http://codeforces.net/blog/entry/85

Единственная проблема - сейчас найти его не так то просто.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
хм, не могу комментарий оставить
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Разбор задач первого раунда уже был.
http://codeforces.net/blog/entry/85

Единственная проблема - сейчас найти его не так то просто.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
:D Epic fail... >_<
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Есть предположение, что на сервере есть очередь отправленных, но еще не записанных в БД сообщений и она иногда почему-то блокируется, поэтому сначала их не видно. Такую же фигню замечал пару раз с вкладом. Раньше думал, что это зависит от браузера, но недавно у меня в FF возник такой же баг, правда я остановился на двух сообщениях :)
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я представляю сколько писем пришло на почту топикстартеру (при включённой функции) и плачу.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да, знаю. У меня другой разбор. Решение другое.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Окей, тогда так и пиши, что это принципиально новое решение. :-)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Судя по всему, аффтар решил поднять себя в топ лидеров по вкладу.

      Наверное, такая древняя несложная задача не стоит столь пристального внимания, хотя сама идея написания разборов (желательно своевременных) большим количеством членов сообщества - это и есть провозглашенный ММ краудсорсинг.
»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Need the explanation of formula 1. n = pi / gcd(A, B, C) and
2. n ploygon area = n / 2 * R2 * sin(2pi / n)

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +19 Проголосовать: не нравится

    I couldn't understand The first formula but I understood the second one, The condition in the problem is somewhat like this.  Here we can see that a n sided regular polygon is composed of n triangles all of which have a vertex at the center of the circle. So to find the total area we select one of the triangle's like this and find it's area and multiply it by n. We know the central angle of each such triangle is and from the figure we see that OF = (R cos ())
    and DF = (R sin ()) also DE = 2Rsin ()
    So Area of ODE is () = (R cos ()) (2Rsin ()) = () sin ()
    Total area = () sin ()
    The images were made with MS Paint so I apologize for the quality. I followed whatever the editorial said and got AC 9274841.

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится -13 Проголосовать: не нравится

.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You should not judge one who made a mistake ( to your mind ) almost 2 years ago. Use time machine !

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

very easy problem

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How do you prove that N = PI / (gcd(A, B, C)) ?

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    2 * Pi / N is an angle from the center of the сircumscribed circle between two closest vertices of desired polygon. Then angles from the center between two vertices of triangle will be a * (2 * PI / N), b * (2 * PI / N) and c * (2 * PI / N), where a + b + c = N. Now let's notice, that the angles of our triangle (A, B, C) are inscribed angles of the сircumscribed circle. Therefore A = a * (PI / N), etc. Therefore gcd(A, B, C) = PI / N. It is also true if gcd(a, b, c) > 1, because it is beneficial to take the least N.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

can someone help me with the concept of epsilon in finding the gcd. Why do most of the accepted answers have it as 10^-4 . when i reduce it to 10^-5 , i get incorrect answer. Can someone tell me how did we decide this value because i think that lesser the value of eps meant a more precise answer??