codeforces 698F

http://codeforces.com/contest/698/problem/F

给定一个长度为\(n\)的排列\(p\),有些位置已经填了数字,让你填上剩余的数字

问存在多少的排列满足

若存在\(\forall 1\le i<j\le n \; i \perp j\) 当且仅当 \(p_i \perp p_j\)

首先糊结论

对于排列都没有确定的情况

  1. 如果存在下标\(i\)\(j\)满足\(i\)\(j\)的质因子种类相同,那么可以swap(i, j)
  2. 如果存在两个质数\(a\)\(b\),他们在排列出现次数相同,那么可以swap({1 a, 2 a, ..., k * a}, {1 * b, 2 * b, ..., k * b})

然后如果有确定的数的话

可以发现对于位置\(i\)\(p_i\)他们的质因子是一个双射的关系

便于处理可以将\(1\)看成质数

(做过的题又不会做来补发题解qwq

猜你喜欢

转载自www.cnblogs.com/foreverpiano/p/9351030.html