Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

제약 조건을 만족하는 점을 찾는 C++ 코드

<시간/>

두 점 a =(x1, y1)와 b =(x2, y2)가 주어졌다고 가정합니다. 두 점 사이의 맨해튼 거리는 dist(a, b) =|x1 - x2| + |y1 - y2|. 점 a의 좌표가 (0, 0)이고 점 b의 좌표가 (x, y)이면 dist(a, c) =dist(a, b)/ 2 및 dist( b, c) =dist(a, b)/2. 그런 점이 없으면 -1, -1을 출력합니다.

따라서 입력이 x =13, y =7과 같으면 출력은 6, 4가 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

if x mod 2 is same as 0 and y mod 2 is same as 0, then:
   print( x / 2, y / 2)
otherwise when (x + y) mod 2 is same as 1, then:
   print(- 1, - 1)
Otherwise,
   print(x / 2, (y + 1) / 2)

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int x, int y) {
   if(x % 2 == 0 && y % 2 == 0)
      cout<< x / 2 <<' '<< y / 2 <<endl;
   else if((x + y) % 2 == 1)
      cout<< -1 <<' '<< -1 <<endl;
   else
      cout<< x / 2 <<' '<< (y + 1) / 2 << endl;
}
int main() {
   int x = 13, y = 7 ;
   solve(x, y);
   return 0;
}

입력

13, 7

출력

6 4