아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

엄청난 수열

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

요약
첫 n-1개 항의 공집합이 아닌 모든 부분집합 합을 더해 수열을 정의하고, 여러 시작값에 대해 최대공약수, 최소공배수의 2의 지수, 구간 합, 특정 항을 구한다.
난이도

어려움10점 중 9점

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

문제

피보나치 수는 빠르게 커진다. 택희는 100만 번째 피보나치 수까지 종이에 적어 보고도 성에 차지 않아, 훨씬 빠르게 커지는 수열을 직접 정의했다.

첫 항은 a1=ka_1 = k이고, Nn={1,2,3,…,n}N_n = \{1, 2, 3, \dots, n\}이라 할 때 다음 항은 아래 식으로 정해진다.

an+1=∑∅≠S⊆Nn∑i∈Saia_{n+1} = \sum_{\emptyset \ne S \subseteq N_n} \sum_{i \in S} a_i

즉 an+1a_{n+1}은 a1a_1부터 ana_n까지 중에서 하나 이상을 고르는 모든 방법마다 고른 수의 합을 구한 다음, 그 값을 전부 더한 것이다.

a1=1a_1 = 1인 수열의 앞부분 몇 항은 이렇다.

  • a2=(a1)=1a_2 = (a_1) = 1
  • a3=(a1)+(a2)+(a1+a2)=4a_3 = (a_1) + (a_2) + (a_1 + a_2) = 4
  • a4=(a1)+(a2)+(a3)+(a1+a2)+(a1+a3)+(a2+a3)+(a1+a2+a3)=24a_4 = (a_1) + (a_2) + (a_3) + (a_1 + a_2) + (a_1 + a_3) + (a_2 + a_3) + (a_1 + a_2 + a_3) = 24

택희는 이 수열을 놓고 질문 QQ개를 준비했다. 질문마다 첫 항 a1a_1을 따로 주므로 질문마다 다른 수열을 다룬다. 모든 질문에 답하는 프로그램을 작성하자.

입력

첫 줄에 질문의 개수 QQ가 주어진다. (1≤Q≤2000001 \le Q \le 200000)

이어지는 QQ개의 줄에 다음 네 가지 중 한 형태의 질문이 주어진다.

  • 1 a1 i j (1≤a1≤1051 \le a_1 \le 10^5, 1≤i,j≤1061 \le i, j \le 10^6): 첫 항이 a1a_1인 수열에서 aia_i와 aja_j의 최대공약수는 얼마인가?
  • 2 a1 i j (1≤a1≤1051 \le a_1 \le 10^5, 1≤i,j≤1061 \le i, j \le 10^6): 첫 항이 a1a_1인 수열에서 aia_i와 aja_j의 최소공배수를 LL이라 하자. 이 값은 너무 크므로, L2P\frac{L}{2^P}이 정수가 되게 하는 가장 큰 정수 PP를 묻는다.
  • 3 a1 i j (1≤a1≤1051 \le a_1 \le 10^5, 1≤i,j≤1061 \le i, j \le 10^6): 첫 항이 a1a_1인 수열에서 ∑k=ijak\sum_{k=i}^{j} a_k는 얼마인가? 이 형태의 질문은 항상 i≤ji \le j를 만족하도록 주어진다.
  • 4 a1 k (1≤a1≤1051 \le a_1 \le 10^5, 1≤k≤1061 \le k \le 10^6): 첫 항이 a1a_1인 수열에서 aka_k는 얼마인가?

출력

QQ개의 줄에 걸쳐 각 질문의 답을 1,000,000,007로 나눈 나머지를 입력에 주어진 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 1 3 4
    2 2 3 4
    3 1 2 3
    4 1 5
    4 2 1000
    
    예상 출력
    4
    4
    5
    240
    949550777
    
  2. 예제 2

    입력
    6
    1 1 1 1
    2 1 1 2
    3 5 1 1
    4 5 2
    1 3 4 2
    2 4 5 3
    
    예상 출력
    1
    0
    5
    5
    3
    6