Dadas las coordenadas de dos puntos de pivote (x0, y0) y (x1, y1) en el plano de coordenadas. Junto a cada pivote, se atan dos imanes diferentes con la ayuda de una cuerda de longitud r1 y r2 respectivamente. Encuentra la distancia entre ambos imanes cuando se repelen y cuando se atraen.
Ejemplos:
Entrada: x1=0, y1=0, x2=5, y2=0, r1=2, r2=2
Salida: Distancia mientras repulsión = 9, Distancia mientras atracción = 1Entrada: x1=0, y1=0, x2=5, y2=0, r1=3, r2=3
Salida: Distancia mientras repulsión = 11, Distancia mientras atracción = 0
Como todos sabemos acerca de las propiedades del imán, se repelen entre sí cuando están enfrentados con el mismo polo y se atraen cuando están enfrentados con el polo opuesto. Además, la fuerza de atracción, así como la de repulsión, siempre actúan en línea recta.
Tenemos dos puntos de pivote en las coordenadas, por lo que la distancia entre estos puntos es D = ((x1-x2) 2 +(y1-y2) 2 ) 1/2 .
Además, podemos concluir que la distancia entre imanes es máxima durante la repulsión y que también debería ser la distancia entre pivotes + la suma de la longitud de ambas cuerdas.
En caso de atracción, tenemos que cuidar dos casos:
la distancia mínima es la distancia entre los pivotes: la suma de la longitud de ambas cuerdas
o la distancia mínima debe ser cero en caso de que la suma de la longitud de las cuerdas sea mayor que la distancia entre los puntos de pivote.
Ilustración con ayuda del diagrama:
C++
// C++ program for max and min distance #include <bits/stdc++.h> using namespace std; // Function for finding distance between pivots int pivotDis(int x0, int y0, int x1, int y1) { return sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); } // Function for minimum distance int minDis(int D, int r1, int r2) { return max((D - r1 - r2), 0); } // Function for maximum distance int maxDis(int D, int r1, int r2) { return D + r1 + r2; } // Drivers code int main() { int x0 = 0, y0 = 0, x1 = 8, y1 = 0, r1 = 4, r2 = 5; int D = pivotDis(x0, y0, x1, y1); cout << "Distance while repulsion = " << maxDis(D, r1, r2); cout << "\nDistance while attraction = " << minDis(D, r1, r2); return 0; }
Java
// Java program for max // and min distance import java.io.*; class GFG { // Function for finding // distance between pivots static int pivotDis(int x0, int y0, int x1, int y1) { return (int)Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); } // Function for // minimum distance static int minDis(int D, int r1, int r2) { return Math.max((D - r1 - r2), 0); } // Function for // maximum distance static int maxDis(int D, int r1, int r2) { return D + r1 + r2; } // Driver Code public static void main (String[] args) { int x0 = 0, y0 = 0, x1 = 8, y1 = 0, r1 = 4, r2 = 5; int D = pivotDis(x0, y0, x1, y1); System.out.print( "Distance while " + "repulsion = " + maxDis(D, r1, r2)); System.out.print("\nDistance while " + "attraction = " + minDis(D, r1, r2)); } } // This code is contributed by anuj_67.
Python3
# Python 3 program for max and min # distance import math # Function for finding distance between # pivots def pivotDis(x0, y0, x1, y1): return math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)) # Function for minimum distance def minDis( D, r1, r2): return max((D - r1 - r2), 0) # Function for maximum distance def maxDis( D, r1, r2): return D + r1 + r2 # Drivers code x0 = 0 y0 = 0 x1 = 8 y1 = 0 r1 = 4 r2 = 5 D = pivotDis(x0, y0, x1, y1) print("Distance while repulsion = ", int(maxDis(D, r1, r2))) print("Distance while attraction = ", minDis(D, r1, r2)) # This code is contributed by Smitha
C#
// C# program for max and min distance using System; class GFG { // Function for finding // distance between pivots static int pivotDis(int x0, int y0, int x1, int y1) { return (int)Math.Sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); } // Function for // minimum distance static int minDis(int D, int r1, int r2) { return Math.Max((D - r1 - r2), 0); } // Function for // maximum distance static int maxDis(int D, int r1, int r2) { return D + r1 + r2; } // Driver Code public static void Main () { int x0 = 0, y0 = 0, x1 = 8, y1 = 0, r1 = 4, r2 = 5; int D = pivotDis(x0, y0, x1, y1); Console.WriteLine( "Distance while " + "repulsion = " + maxDis(D, r1, r2)); Console.WriteLine("Distance while " + "attraction = " + minDis(D, r1, r2)); } } // This code is contributed by anuj_67.
PHP
<?php // PHP program for max and // min distance // Function for finding // distance between pivots function pivotDis($x0, $y0, $x1, $y1) { return sqrt(($x1 - $x0) * ($x1 - $x0) + ($y1 - $y0) * ($y1 - $y0)); } // Function for minimum distance function minDis( $D, $r1, $r2) { return max(($D - $r1 - $r2), 0); } // Function for maximum distance function maxDis( $D, $r1, $r2) { return $D + $r1 + $r2; } // Driver code $x0 = 0; $y0 = 0; $x1 = 8; $y1 = 0; $r1 = 4; $r2 = 5; $D = pivotDis($x0, $y0, $x1, $y1); echo "Distance while repulsion = " , maxDis($D, $r1, $r2); echo "\nDistance while attraction = " , minDis($D, $r1, $r2); // This code is contributed by anuj_67. ?>
Javascript
<script> // Javascript program for max and min distance // Function for finding distance between pivots function pivotDis(x0, y0, x1, y1) { return Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); } // Function for minimum distance function minDis(D, r1, r2) { return Math.max((D - r1 - r2), 0); } // Function for maximum distance function maxDis(D, r1, r2) { return D + r1 + r2; } // Driver code let x0 = 0, y0 = 0, x1 = 8, y1 = 0, r1 = 4, r2 = 5; let D = pivotDis(x0, y0, x1, y1); document.write("Distance while repulsion = " + maxDis(D, r1, r2) + "</br>"); document.write("Distance while attraction = " + minDis(D, r1, r2)); // This code is contributed by jana_sayantan </script>
Distance while repulsion = 17 Distance while attraction = 0
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA