Намерете координатите на триъгълника по средата на всяка страна
Дадени са три координати (x y), които са средата на страните на триъгълника. Задачата е да се намерят координатите на триъгълника.
Примери:
Input : midx 1 = 5 midy 1 = 3 midx 2 = 4 midy 2 = 4 midx 3 = 5 midy 3 = 5 Output : x 1 = 4 y 1 = 2 x 2 = 4 y 2 = 6 x 3 = 6 y 3 = 4
Solution can be verified by the figure.
Нека решим отделно за X-координати и Y-координати. За X координата на върховете нека те бъдат x 1 х 2 х 3 . Тогава X-координатата на средните точки ще бъде (x 1 + x 2 )/2 (x 2 + x 3 )/2 (x 3 + x 1 )/2. Забележете, че сумата от тези 3 израза е равна на сумата от X-координати. Сега имаме сбор от 3 променливи и 3 израза за сумата на всяка двойка от тях, за да намерим стойностите на координатите чрез решаване на уравнения.
По подобен начин решаваме за Y-координати.
По-долу е изпълнението на този подход:
C++ // C++ program to find coordinate of the // triangle given midpoint of each side #include #define N 3 using namespace std ; // Return after solving the equations and // finding the vertices coordinate. vector < int > solve ( int v []) { vector < int > res ; // Finding sum of all three coordinate. int all3 = v [ 0 ] + v [ 1 ] + v [ 2 ]; // Solving the equation. res . push_back ( all3 - v [ 1 ] * 2 ); res . push_back ( all3 - v [ 2 ] * 2 ); res . push_back ( all3 - v [ 0 ] * 2 ); return res ; } // Finds vertices of a triangles from given // middle vertices. void findVertex ( int xmid [] int ymid []) { // Find X coordinates of vertices. vector < int > V1 = solve ( xmid ); // Find Y coordinates of vertices. vector < int > V2 = solve ( ymid ); // Output the solution. for ( int i = 0 ; i < 3 ; i ++ ) cout < < V1 [ i ] < < ' ' < < V2 [ i ] < < endl ; } // Driver code int main () { int xmid [ N ] = { 5 4 5 }; int ymid [ N ] = { 3 4 5 }; findVertex ( xmid ymid ); return 0 ; }
Java import java.util.Vector ; // Java program to find coordinate of the // triangle given midpoint of each side class GFG { //static final int N = 3; // Return after solving the equations and // finding the vertices coordinate. static Vector < Integer > solve ( int v [] ) { Vector < Integer > res = new Vector < Integer > (); // Finding sum of all three coordinate. int all3 = v [ 0 ] + v [ 1 ] + v [ 2 ] ; // Solving the equation. res . add ( all3 - v [ 1 ] * 2 ); res . add ( all3 - v [ 2 ] * 2 ); res . add ( all3 - v [ 0 ] * 2 ); return res ; } // Finds vertices of a triangles from given // middle vertices. static void findVertex ( int xmid [] int ymid [] ) { // Find X coordinates of vertices. Vector < Integer > V1 = solve ( xmid ); // Find Y coordinates of vertices. Vector < Integer > V2 = solve ( ymid ); // Output the solution. for ( int i = 0 ; i < 3 ; i ++ ) { System . out . println ( V1 . get ( i ) + ' ' + V2 . get ( i )); } } // Driver code public static void main ( String [] args ) { int xmid [] = { 5 4 5 }; int ymid [] = { 3 4 5 }; findVertex ( xmid ymid ); } } // This code is contributed by // PrinciRaj1992
Python3 # Python3 program to find coordinate of the # triangle given midpoint of each side N = 3 # Return after solving the equations and # finding the vertices coordinate. def solve ( v ): res = [] # Finding sum of all three coordinate. all3 = v [ 0 ] + v [ 1 ] + v [ 2 ] # Solving the equation. res . append ( all3 - v [ 1 ] * 2 ) res . append ( all3 - v [ 2 ] * 2 ) res . append ( all3 - v [ 0 ] * 2 ) return res # Finds vertices of a triangles from given # middle vertices. def findVertex ( xmid ymid ): # Find X coordinates of vertices. V1 = solve ( xmid ) # Find Y coordinates of vertices. V2 = solve ( ymid ) # Output the solution. for i in range ( 0 3 ): print ( V1 [ i ] end = ' ' ) print ( V2 [ i ]) # Driver code if __name__ == '__main__' : xmid = [ 5 4 5 ] ymid = [ 3 4 5 ] findVertex ( xmid ymid ) # This code is contributed by # Sanjit_Prasad
C# // C# program to find coordinate of the // triangle given midpoint of each side using System ; using System.Collections ; class GFG { //static final int N = 3; // Return after solving the equations and // finding the vertices coordinate. static ArrayList solve ( int [] v ) { ArrayList res = new ArrayList (); // Finding sum of all three coordinate. int all3 = v [ 0 ] + v [ 1 ] + v [ 2 ]; // Solving the equation. res . Add ( all3 - v [ 1 ] * 2 ); res . Add ( all3 - v [ 2 ] * 2 ); res . Add ( all3 - v [ 0 ] * 2 ); return res ; } // Finds vertices of a triangles from given // middle vertices. static void findVertex ( int [] xmid int [] ymid ) { // Find X coordinates of vertices. ArrayList V1 = solve ( xmid ); // Find Y coordinates of vertices. ArrayList V2 = solve ( ymid ); // Output the solution. for ( int i = 0 ; i < 3 ; i ++ ) { Console . WriteLine ( V1 [ i ] + ' ' + V2 [ i ]); } } // Driver code public static void Main () { int [] xmid = { 5 4 5 }; int [] ymid = { 3 4 5 }; findVertex ( xmid ymid ); } } // This code is contributed by mits
PHP // PHP program to find coordinate of the // triangle given midpoint of each side $N = 3 ; // Return after solving the equations and // finding the vertices coordinate. function solve ( $v ) { $res = array (); // Finding sum of all three coordinate. $all3 = $v [ 0 ] + $v [ 1 ] + $v [ 2 ]; // Solving the equation. array_push ( $res $all3 - $v [ 1 ] * 2 ); array_push ( $res $all3 - $v [ 2 ] * 2 ); array_push ( $res $all3 - $v [ 0 ] * 2 ); return $res ; } // Finds vertices of a triangles from // given middle vertices. function findVertex ( $xmid $ymid ) { // Find X coordinates of vertices. $V1 = solve ( $xmid ); // Find Y coordinates of vertices. $V2 = solve ( $ymid ); // Output the solution. for ( $i = 0 ; $i < 3 ; $i ++ ) print ( $V1 [ $i ] . ' ' . $V2 [ $i ] . ' n ' ); } // Driver code $xmid = array ( 5 4 5 ); $ymid = array ( 3 4 5 ); findVertex ( $xmid $ymid ) // This code is contributed by mits ?>
JavaScript < script > // JavaScript program to find coordinate of the // triangle given midpoint of each side // Return after solving the equations and // finding the vertices coordinate. function solve ( v ) { var res = []; // Finding sum of all three coordinate. var all3 = v [ 0 ] + v [ 1 ] + v [ 2 ]; // Solving the equation. res . push ( all3 - v [ 1 ] * 2 ); res . push ( all3 - v [ 2 ] * 2 ); res . push ( all3 - v [ 0 ] * 2 ); return res ; } // Finds vertices of a triangles from given // middle vertices. function findVertex ( xmid ymid ) { // Find X coordinates of vertices. var V1 = solve ( xmid ); // Find Y coordinates of vertices. var V2 = solve ( ymid ); // Output the solution. for ( var i = 0 ; i < 3 ; i ++ ) { document . write ( V1 [ i ] + ' ' + V2 [ i ] + '
' ); } } // Driver code var xmid = [ 5 4 5 ]; var ymid = [ 3 4 5 ]; findVertex ( xmid ymid ); < /script>
Изход:
6 4 4 2 4 6
Времева сложност: О(1)
Помощно пространство : O(1), защото използва постоянно пространство