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

📅  最后修改于: 2021-10-23 08:32:58             🧑  作者: Mango

在一页上给你三个点 a、b、c。查找是否可以将页面围绕该点旋转一个角度,使得’a’的新位置与’b’的旧位置相同,’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


Javascript


输出:

No

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程