| 题目名称 | 4497. Ruyi的书架 |
|---|---|
| 输入输出 | book.in/out |
| 难度等级 | ★★★☆ |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 125 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 分享题解 |
| 通过:1, 提交:2, 通过率:50% | ||||
|
|
100 | 1.013 s | 87.05 MiB | C++ |
|
|
0 | 1.050 s | 87.05 MiB | C++ |
| 关于 Ruyi的书架 的近10条评论(全部评论) |
|---|
有一天,你来到了 $Ruyi$ 的家里面,发现他的书乱糟糟的。
为了让他的家里变得整洁,于是你们共同开始整理书架。
$Ruyi$ 喜欢读一些书,你需要帮助他整理他的书架。
因为 $Ruyi$ 发现一段时间一直读一种类型的书非常的无聊,所以他不希望把类似的书放在一起。
具体来说,每本书有个内容值 $a_i$,如果两本相邻的书满足 $a_i * a_{i+1}$ 是个完全平方数,$Ruyi$ 就会因为太无聊而不读这些书。
有一天你心血来潮,想帮 $Ruyi$ 整理书架,由于 $Ruyi$ 希望能每天坚持读书,所以他想询问有多少种排列方案数,满足相邻的两本书都不无聊,由于这个数可能太大了,所以你只需要输出可能的方案数对 $10^9+7$ 取模的结果就可以了。
你能正确的回答 $Ruyi$ 这个问题吗,如果可以的话,$Ruyi$ 说不定会送你本书呢……
输入有两行:
第一行一个正整数 $n$,表示 $Ruyi$ 拥有的书个数。
第二行有 $n$ 个整数,第 $i$ 个整数 $a_i$ 表示编号为 $i$ 的球球的内容值。
输出一个整数,表示可能的排列数对 $10^9+7$ 取模的结果
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\%$ 的数据满足:$1\le n\le 300$,$1 \le a_i \le 10^9$。
本题共 $10$ 个测试点,编号为 $1 \sim 10$,每个测试点额外保证如下:
测试点编号 |$n$ 的范围 |$a_i$ 的范围
$1 \sim 2$ |$n\le 10$ |$a_i\le 10^9$
$3 \sim 4$ |$n\le 300$ |$a_i\le 2$
$5 \sim 7$ |$n\le 300$ |$a_i\le 10^9$ 且 $a_i$ 是质数
$8 \sim 10$ |$n\le 300$ |$a_i\le 10^9$