#P4935. 口袋里的纸飞机

    ID: 3921 远端评测题 3000ms 500MiB 尝试: 0 已通过: 0 难度: 9 上传者: 标签>数学素数判断,质数,筛法生成函数洛谷月赛

口袋里的纸飞机

Description

一个大小为nn的数列{ai}\{a_i\},每个数都在范围[1,R][1,R]

对于每种数列,可以生成一个n×nn\times n的网格,其中格子(i,j)(i,j)中的数为ai×ajmodPa_i\times a_j \mod P

比如,如果数列是{1,2,3},P=5\{1,2,3\},P=5,则生成的网格为

1 2 3
2 4 1
3 1 4(因为2*3%5=1,3*3%5=4)

对于一个网格,定义法法值为其中不同的数个数,比如上面那个就是4个数,即{1,2,3,4}\{1,2,3,4\}

现在你需要对所有数列的法法值的和对109+710^9+7取模

Input Format

第一行输入正整数n,P,Rn,P,R

Output Format

输出答案对109+710^9+7取模

2 3 3
15
4 7 5
2845
70 43 22
992103136
500 2011 999980895
767094932

Hint

样例1解释:

{ai}={1,1}:
1 1
1 1
(ans=1)
{ai}={1,2}:
1 2
2 1
(ans=2)
{ai}={1,3}:
1 0
0 0
(ans=2)
{ai}={2,1}:
1 2
2 1
(ans=2)
{ai}={2,2}:
1 1
1 1
(ans=1)
{ai}={2,3}:
1 0
0 0
(ans=2)
{ai}={3,1}:
0 0
0 1
(ans=2)
{ai}={3,2}:
0 0
0 1
(ans=2)
{ai}={3,3}:
0 0
0 0
(ans=1)
一共为15

保证PP为大于等于3的质数

测试点 N R P
1,2 N5N\leq 5 R5R\leq 5 R×R<P20R\times R<P\leq 20
3,4,5,6 N15N\leq 15 R10R\leq 10 R×R<P200R\times R<P\leq 200
7,8 N30N\leq 30 R×R<P500R\times R<P\leq 500
9,10,11,12 N100N\leq 100
13,14,15,16 N300N\leq 300 R109R\leq 10^9 P1000P\leq 1000
17,18,19,20 N500N\leq 500 P5000P\leq 5000

对于所有数据,n500,P5000,R109n\leq 500,P\leq 5000,R\leq 10^9