最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • 小可的排列

    正文概述 陈老师   2026-01-20 15:14:42  

    题目描述

    小可是一名符文石收藏家,她拥有 nn 枚符文石,每枚石头内部蕴含一个古老的魔力值 aia_i1ai1091 \le a_i \le 10^9)。

    小可发现,如果将石头排成一行,当相邻两块石头的魔力值乘积为完全平方数时,会触发古老的禁忌,导致符文失效。

    因此,她想计算有多少种排列方式,可以避免触发任何禁忌。

    你需要帮她求出相邻魔力值乘积均不是完全平方数的排列总数,结果对 109+710^9+7 取模。

    输入格式

    输入有两行:

    第一行一个正整数nn,表示小可拥有的石头个数。
    第二行有nn 个整数,第ii 个整数a[i]a[i]表示编号为ii 的石头的魔力值。

    输出格式

    输出一行,包括一个正整数,表示合法排列个数对109+710^9+7(即1000000007)取模的结果。

    样例

    4
    2 2 3 4
    
    12
    
    9
    2 4 8 9 12 4 3 6 11
    
    99360
    

    提示

    【样例1 解释】 12 种合法的排列分别为:

    1,3,2,4
    2,3,1,4
    3,1,4,2
    3,2,4,1
    1,3,4,2
    2,3,4,1
    1,4,2,3
    2,4,1,3
    4,1,3,2
    4,2,3,1
    1,4,3,2
    2,4,3,1
    

    数据范围

    对对于100%100\% 的数据满足:1n3001≤n≤3001a[i]1091≤a[i]≤10^9

    本题共 1010 个测试点,编号为 1~10,每个测试点额外保证如下:

    测试点编号 n的范围 a[i]的范围
    1~2 n10n≤10 a[i]109a[i]≤10^9
    3~5 n300n≤300 1a[i]21≤a[i]≤2
    6~8 - a[i]109a[i]≤10^9且都是质数
    9~10 a[i]109a[i]≤10^9

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » 小可的排列