만드는 중입니다

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

Rikka와 방정식

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

요약
n이 주어지면 m이 n 이하인 (a, b, m) 중 정수 x, y가 x^2 + y^2 ≡ a, xy ≡ b (mod m)을 만족하는 튜플의 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
수학, 정수론
정답자
아직 제출이 없습니다

문제

힐베르트의 열 번째 문제의 결론에 따르면, 임의의 연립 방정식의 정수해를 모두 찾는 알고리즘은 만들 수 없다. 하지만 몇몇 간단한 방정식은 여전히 쉽게 풀 수 있다.

예를 들어, 정수 xx, yy가 x2+y2=ax^2 + y^2 = a와 xy=bxy = b를 동시에 만족하는 경우가 있는지 어떻게 확인할까? x+y=±a+2bx + y = \pm \sqrt{a + 2b}와 x−y=±a−2bx - y = \pm \sqrt{a - 2b}를 계산한 뒤, xx와 yy가 모두 정수가 될 수 있는지 확인하면 된다.

Rikka는 이 문제가 너무 단순하다고 생각해서 더 어렵게 만들고 싶어 한다. Rikka는 등식을 mm으로 나눈 나머지로 보면 문제가 달라질 때가 있다는 것을 안다. 그래서 이 문제에도 같은 방법을 적용하려 한다.

0≤a,b<m0 \leq a, b < m인 튜플 (a,b,m)(a, b, m)은, x2+y2≡a(modm)x^2 + y^2 \equiv a \pmod{m}이고 xy≡b(modm)xy \equiv b \pmod{m}을 만족하는 정수 xx, yy가 존재하는 경우에만 유효하다고 한다. 양의 정수 nn이 주어지면, m≤nm \leq n인 유효한 튜플 (a,b,m)(a, b, m)의 개수를 구하라. 개수가 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫째 줄에 테스트 케이스의 개수 tt (1≤t≤1051 \leq t \leq 10^5)가 주어진다. 각 테스트 케이스는 한 줄에 정수 nn (1≤n≤1071 \leq n \leq 10^7) 하나로 주어진다.

출력

각 테스트 케이스마다 유효한 튜플의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5
    3
    5
    10
    100
    1000
    
    예상 출력
    8
    22
    104
    45933
    32791150