ในปัญหานี้ เราได้รับพิกัดสามจุดที่อยู่บนหน้า งานของเราคือ ค้นหาว่าสามารถหมุนหน้าเป็นมุมได้หรือไม่
การหมุนหน้าทำในลักษณะที่ตำแหน่งใหม่ของ 'x' เป็นตำแหน่งเก่าของ 'y' ตำแหน่งใหม่ของ 'y' คือตำแหน่งเดิมของ 'z' และพิมพ์คำว่า “ใช่” หรือ “ไม่ใช่” ตามการหมุน
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: x =(0, 1), y =(1, 0), z =(0, -1)
ผลลัพธ์: ใช่
คำอธิบาย:
หมุนหน้าได้ 90 o .
แนวทางแก้ไข:
เราสามารถหมุนหน้าได้บางมุมหากมีเงื่อนไขบางประการ
สามารถทำได้ถ้าระยะทางระหว่าง x และ y เท่ากับระยะทางระหว่าง y และ z นอกจากนี้ หากจุดทั้งหมดอยู่ในการหมุนเส้นเดียวกันไม่สามารถทำได้
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; int possibleOrNot(int coordinates[3][2]){ long long dis1 = pow(coordinates[1][0] - coordinates[0][0], 2) + pow(coordinates[1][1] - coordinates[0][1], 2); long long dis2 = pow(coordinates[2][0] - coordinates[1][0], 2) + pow(coordinates[2][1] - coordinates[1][1], 2); if(dis1 != dis2) return 0; else if (coordinates[1][0] == ((coordinates[0][0] + coordinates[2][0]) / 2.0) && coordinates[1][1] == ((coordinates[0][1] + coordinates[2][1]) / 2.0)) return 0; else return 1; } int main() { int coordinates[3][2] = {{0 , 1}, {1 , 0}, {0, -1} } ; if ( possibleOrNot(coordinates)) cout<<"The rotation of page is possible"; else cout<<"The rotation of page is not possible"; return 0; }
ผลลัพธ์
The rotation of page is possible