📌  相关文章
📜  查找是否可以将页面旋转一定角度。

📅  最后修改于: 2021-04-26 19:29:19             🧑  作者: Mango

在页面上给您三个点a,b,c。查找是否有可能将页面绕该点旋转一个角度,以使新位置“ a”与旧位置“ b”相同,新位置“ b”与旧位置相同。 ‘C’。如果存在这样的角度,则打印“是”,否则打印“否”。

例子:

Input : a1 = 0, a2 = 1, b1 = 1, b2 =  1,
        c1 = 1, c2 = 0
Output : Yes
Explanation : Rotate the page by 90 degree.

Input : a1 = 1, a2 = 1, b1 = 0, b2 = 0,
        c1 = 1000, c2 = 1000
Output : No

仅当点“ a”和“ b”之间的距离等于点“ b”和“ c”之间的距离时,才可以将页面旋转一定角度。但是,如果这些点在同一条线上,则在点“ b”处不会旋转。当’a’,’b’,’c’在同一行或dis(a,b)!= dis(b,c)时,问题没有解决方案

C++
// C++ program to find if its possible 
// to rotate page or not
#include
using namespace std;
  
// function to find if it's possible
// to rotate page or not
void possibleOrNot(long long a1, long long a2,
                   long long b1, long long b2, 
                   long long c1, long long c2){
      
    // Calculating distance b/w points
    long long dis1 = pow(b1 - a1, 2) + 
                      pow(b2 - a2, 2);
    long long dis2 = pow(c1 - b1, 2) + 
                      pow(c2 - b2, 2);
  
    // If distance is not equal
    if(dis1 != dis2)
        cout << "No";
          
    // If the points are in same line
    else if (b1 == ((a1 + c1) / 2.0) && b2 == 
                          ((a2 + c2) / 2.0))
        cout << "No";
    else
        cout << "Yes";
}
  
// Driver Code
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
      
    // Points a, b, and c
    long long a1 = 1, a2 = 0, b1 = 2,
             b2 = 0, c1 = 3, c2 = 0;
    possibleOrNot(a1, a2, b1, b2, c1, c2);
    return 0;
}


Java
// java program to find if its possible 
// to rotate page or not
import java.util.Arrays;
  
class GFG {
          
    // function to find if it's possible
    // to rotate page or not
    static void possibleOrNot(long a1,long a2,
                              long b1,long b2, 
                              long c1,long c2)
    {
          
        // Calculating distance b/w points
        long dis1 = (long)Math.pow(b1 - a1, 2) + 
                    (long) Math.pow(b2 - a2, 2);
                      
        long dis2 = (long)Math.pow(c1 - b1, 2) + 
                     (long)Math.pow(c2 - b2, 2);
      
        // If distance is not equal
        if(dis1 != dis2)
            System.out.print("No");
              
        // If the points are in same line
        else if (b1 == ((a1 + c1) / 2.0) && 
                       b2 == ((a2 + c2) / 2.0))
            System.out.print("No");
        else
            System.out.print("Yes");
    }
      
    // Driver method
    public static void main(String[] args)
    {
          
        // Points a, b, and c
        long a1 = 1, a2 = 0, b1 = 2,
                b2 = 0, c1 = 3, c2 = 0;
                  
        possibleOrNot(a1, a2, b1, b2, c1, c2);
    }
}
  
// This code is contributed by Anant Agarwal.


Python3
# Python3 program to fill an
# array with frequencies.
  
# Function to find if it's possible
# to rotate page or not
def possibleOrNot(a1, a2, b1, b2, c1, c2):
      
    # Calculating distance b/w points
    dis1 = (pow(b1 - a1, 2) +
            pow(b2 - a2, 2))
    dis2 = (pow(c1 - b1, 2) +
            pow(c2 - b2, 2))
  
    # If distance is not equal
    if(dis1 != dis2):
        print("No")
          
    # If the points are in same line
    elif (b1 == ((a1 + c1) // 2.0) and 
          b2 == ((a2 + c2) // 2.0)):
        print("No")
    else:
        print("Yes")
  
# Driver Code
  
# Points a, b, and c
a1, b1, c1 = 1, 2, 3
a2 = b2 = c2 = 0
possibleOrNot(a1, a2, b1, b2, c1, c2)
  
# This code is contributed by Anant Agarwal.


C#
// C# program to fill an array with frequencies.
using System;
  
class GFG
{
    // function to find if it's possible
    // to rotate page or not
    static void possibleOrNot(long a1,long a2,
                              long b1,long b2, 
                              long c1,long c2)
    {
           
        // Calculating distance b/w points
        long dis1 = (long)Math.Pow(b1 - a1, 2) + 
                    (long) Math.Pow(b2 - a2, 2);
        long dis2 = (long)Math.Pow(c1 - b1, 2) + 
                    (long)Math.Pow(c2 - b2, 2);
       
        // If distance is not equal
        if(dis1 != dis2)
            Console.Write("No");
               
        // If the points are in same line
        else if (b1 == ((a1 + c1) / 2.0) && b2 == 
                       ((a2 + c2) / 2.0))
            Console.Write("No");
        else
            Console.Write("Yes");
    }
      
    // Driver method
    public static void Main()
    {
        // Points a, b, and c
        long  a1 = 1, a2 = 0, b1 = 2,
                 b2 = 0, c1 = 3, c2 = 0;
        possibleOrNot(a1, a2, b1, b2, c1, c2);
    }
}
// This code is contributed by Anant Agarwal.


PHP


输出:

No