이 문제에서는 페이지에 있는 세 점의 좌표가 제공됩니다. 우리의 임무는 페이지를 비스듬히 회전할 수 있는지 여부를 찾는 것입니다.
페이지의 회전은 'x'의 새 위치가 'y'의 이전 위치이고 'y'의 새 위치가 'z'의 이전 위치가 되는 방식으로 이루어집니다. 그리고 회전에 따라 "예" 또는 "아니오"를 인쇄합니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력: x =(0, 1), y =(1, 0), z =(0, -1)
출력: 예
설명:
<강한>
페이지를 90 o 회전할 수 있습니다. .
해결 방법:
조건이 있으면 페이지를 어느 정도 회전할 수 있습니다.
x와 y 사이의 거리 인 경우 이 작업을 수행할 수 있습니다. y와 z 사이의 distance과 같습니다. 또한 모든 점이 같은 선상에 있으면 회전이 불가능합니다.
우리 솔루션의 작동을 설명하는 프로그램,
예시
#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