math - 如何以指数形式取模

标签 math modulus

问题是关于非常大数的模运算符。

例如,考虑一个要计算排列总数的问题。
考虑一个 90 位数字,9 个数字(1 到 9)中的每一个都重复 10 次
所以90!/(10!)^9)是要计算的

在阅读了 StackOverflow 上的许多答案后,我使用了对数。

现在考虑日志值为 1923.32877864。

现在我的问题是如何显示模数“m”的答案(即 10 ^ log10(value) )?

这是计算可能排列数的最佳方法吗?

编辑
得到了解决方案:)

感谢 duedl0r。

是否按照您使用模乘逆指定的方式进行。 谢谢 :)

最佳答案

我不确定这是否真的可行和正确,但让我总结一下我的评论并扩展 Miky Dinescu 的答案。

正如米奇已经写道:

a × b ≣m am × bm



你可以在你的平等中使用它:

90! / 10!^9 ≣m x



计算每一项:

90!m / 10!^9mm x



然后找出你的multiplicative inverse从10!^ 9m。然后乘以 90!m 的逆。

更新
这似乎是正确的(至少在这种情况下:))。我检查了 wolfram:

(90!/10!^9) mod (10^9+7) = 998551163

这导致相同的结果:

90! mod (10^9+7) = 749079870
10!^9 mod (10^9+7) = 220052161

做相反的事情:

(220052161 * x) mod(10^9+7) = 1 = 23963055

然后:

(749079870*23963055) mod (10^9+7) = 998551163

没有证据,但有一些证据表明它可能有效:)

关于math - 如何以指数形式取模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130784/

相关文章:

javascript - Node.js/Express 应用程序中的内存消耗

java - 数字的模数总是会返回 0 和它的数字-1 之间吗?

android - 如何确定用户触摸了这个矩形中的哪个三角形?

c - 最快计算总和 x^5 + x^4 + x^3...+x^0 (按位可能?) x=16

python - 用于 Reed-Solomon 解码的 Berlekamp-Massey 勘误表(删除+错误)

python - 如何避免模数浮点误差?

java - 编写一个嵌套 for 循环,在 10 X 10 网格中输出一系列 1 和 0

c++ - 使用 C++ 模数运算符的票据面额

math - float 学坏了吗?

php - 有什么方法可以优化 MySQL 中的复杂数学查询吗?