【发布时间】:2015-10-03 22:27:52
【问题描述】:
我想计算 PsmodK 其中 Ps 是总数S 集合中元素的唯一排列。问题是,集合 S 可以有重复,所以 Ps = n! / (f1!f2! ... fn!),其中 n是元素的个数,分母是S中每个元素的频率阶乘的乘积。
可以假设整数 n 非常大,比如在10^6 附近,并且不太可能适合uint64_t。甚至可以在不借助任意精度库的情况下计算 PsmodK 吗?如果有,有什么快速的计算方法吗?
【问题讨论】:
-
顺便说一下,10^6 适合
uint64_t。 -
或者您的意思是
n!不适合uint64_t? -
是的,
n!不适合。 -
顺便说一句。如果 n 在
10^6!附近,则 PsmodK 在大多数情况下将为 0,除非 K 非常大。 -
我认为
k也不一定是素数?
标签: algorithm modular-arithmetic