완전제곱 공화국

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

요약
1부터 n까지의 서로 다른 자연수들의 곱으로 만들 수 있는 가장 큰 완전제곱수를 구해 1,000,000,007로 나눈 나머지를 여러 질의에 대해 출력하는 문제입니다.
난이도

어려움10점 중 8점

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

문제

완전제곱 공화국 사람들은 매년 독립일을 기념한다. 그러나 독립이 아주 오래전 일이라서, 이제는 독립일을 정확히 기억하는 사람이 아무도 없다. 사람들의 기억에 남아 있는 사실은 다음과 같다.

  • 독립일로부터 오늘까지의 날 수 DD는 완전제곱수이다.
  • DD는 nn 이하의 서로 다른 자연수들의 곱으로 나타낼 수 있다.
  • DD는 위 두 조건을 만족하는 가장 큰 수이다.

이 공화국은 1년이 1,000,000,0071{,}000{,}000{,}007일이므로, 사람들은 DD를 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 알고 싶어 한다. 단, 나머지가 가장 큰 것이 아니라 DD 자체가 가장 큰 경우의 나머지를 구해야 한다.

각 nn에 대해, 조건을 만족하는 가장 큰 DD를 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 정수 nn 하나로 주어진다. (1≤n≤10,000,0001 \le n \le 10{,}000{,}000)

00이 입력되면 입력이 끝난다.

출력

각 테스트 케이스마다, 조건을 만족하는 가장 큰 DD를 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    4
    9348095
    6297540
    0
    
    예상 출력
    4
    177582252
    644064736