피타고라스의 정리

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

요약
정수 n이 주어질 때 1 이상 n-1 이하이고 a≤b인 순서쌍 (a,b,c) 중 a^2+b^2≡c^2 (mod n)을 만족하는 개수를 구한다.
난이도

어려움10점 중 8점

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

문제

상근이는 삼각형을, 그중에서도 직각삼각형을 매우 좋아한다.

직각삼각형은 세 변의 길이가 양의 정수 aa, bb, cc이고 a≤ba \le b이며 a2+b2=c2a^2 + b^2 = c^2을 만족하는 삼각형이다.

나머지 연산을 배운 상근이는 피타고라스의 정리에 나머지 연산을 적용해 보기로 했다.

정수 nn이 주어질 때, 1≤a,b,c≤n−11 \le a, b, c \le n-1이고 a≤ba \le b이며

a2+b2≡c2(modn)a^2 + b^2 \equiv c^2 \pmod{n}

을 만족하는 순서쌍 (a,b,c)(a, b, c)의 개수를 세려고 한다.

nn이 주어졌을 때, 조건을 만족하는 (a,b,c)(a, b, c)의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 nn이 주어진다. (2≤n≤500,0002 \le n \le 500{,}000)

출력

첫째 줄에 조건을 만족하는 순서쌍 (a,b,c)(a, b, c)의 개수를 출력한다.

예제2

  1. 예제 1

    입력
    7
    
    예상 출력
    18
    
  2. 예제 2

    입력
    15
    
    예상 출력
    64