만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

제곱의 차

면접 대비

시간 제한1초메모리 제한512 MB

요약
2^60 이하의 n이 주어질 때 x^2 - y^2 = n을 만족하는 양의 정수 x, y를 찾거나 해가 없음을 판별한다.
난이도

보통10점 중 4점

유형
수학, 정수론, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

당신은 기호 계산 시스템용 소프트웨어 모듈 개발에 참여하고 있다. 이 모듈은 특별한 형태의 디오판토스 방정식을 푸는 데 사용된다.

주어진 음이 아닌 정수 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»를 출력한다.

예제2

  1. 예제 1

    입력
    3
    
    예상 출력
    Yes
    2 1
    
  2. 예제 2

    입력
    2
    
    예상 출력
    No