제곱의 차
면접 대비시간 제한1초메모리 제한512 MB
2^60 이하의 n이 주어질 때 x^2 - y^2 = n을 만족하는 양의 정수 x, y를 찾거나 해가 없음을 판별한다.
문제
당신은 기호 계산 시스템용 소프트웨어 모듈 개발에 참여하고 있다. 이 모듈은 특별한 형태의 디오판토스 방정식을 푸는 데 사용된다.
주어진 음이 아닌 정수 n에 대해, 개발 중인 모듈은 x2 − y2 = n을 만족하는 두 자연수 x와 y를 찾아야 한다. 찾은 수는 262 − 1을 초과해서는 안 된다.
주어진 음이 아닌 정수 n에 대해, 제곱의 차가 n인 자연수 x와 y를 262 − 1 이하에서 찾는 프로그램을 작성하시오.
입력
한 줄에 정수 n이 하나 주어진다 (0 ≤ n ≤ 260).
입력으로 주어지는 수는 32비트 자료형에 들어가지 않으므로 64비트 자료형(예: C++의 «long long», 파스칼의 «int64», Java의 «long»)을 사용해야 한다.
출력
찾는 x와 y가 존재하면 두 줄을 출력한다. 첫째 줄에 «Yes»를, 둘째 줄에 x와 y를 출력한다.
조건에 맞는 쌍이 여러 개라면 아무 쌍이나 출력해도 되지만, 1 ≤ x, y ≤ 262 − 1을 만족해야 한다.
해가 없으면 한 줄에 «No»를 출력한다.