A simple way to solve Round368 Div.2 Problem C

Правка en2, от PengsenMao, 2016-08-21 11:54:22

First, suppose n is the shortest side of the triangle, m, k are other two sides. According to Pythagorean Theorem, we know (n^{2}+m^{2}=k^{2})

just do a change (k^{2}-m^{2}=n^{2})

futherly ((k+m)(k-m)=n^{2})

as we know, (n^{2}\times1=n^{2}) so we can suppose that (k+m=n^{2},k-m=1) [because we have SPJ]

easily, we get (k=\frac{n^{2}+1}{2},m=\frac{n^{2}-1}{2})

because the side is a interger, so this solution can only be used when n is a odd.

So how to deal with even? we find that if (k-m) is odd, the solution is suitable for odd. On the other hand, we guess that if(k-m) is even, the solution is suitable for even.

just as this, (k+m=\frac{1}{2}n^{2},k-m=2)

so, we get (k=\frac{1}{4}n^{2}+1,m=k-2)

this is an (O(1)) algorithm.

It seems that CodeForces not support LaTex. So if you want to see more clearly, you can see the formual on this page. P.S. this is my solution in chinese. if you have some questions, i am willing to help you.:)  [my english is not very good, so please pass some grammer fault.:P]

Теги math

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский PengsenMao 2016-08-21 12:09:23 230
en2 Английский PengsenMao 2016-08-21 11:54:22 312
en1 Английский PengsenMao 2016-08-21 11:49:44 893 Initial revision (published)