小编tit*_*tan的帖子

查找字符串的所有唯一排列而不生成重复项

查找字符串的所有排列是通过众所周知的Steinhaus-Johnson-Trotter算法.但如果字符串包含重复的字符,如
AABB,
那么可能的唯一组合将是4!/(2!*2!)= 6

实现这一目标的一种方法是我们可以将它存储在数组中,然后删除重复项.

有没有更简单的方法来修改约翰逊算法,因此我们永远不会生成重复的排列.(以最有效的方式)

c algorithm combinatorics

21
推荐指数
3
解决办法
8649
查看次数

Euler 160:找到阶乘的非平凡5位数

给定一个数字,在尾随0. 9之前找到5位数!= 362880所以f(9)= 36288 10!= 3628800所以f(10)= 36288 20!= 2432902008176640000所以f(20)= 17664查找f(1,000,000,000,000)

为此,我计算了f(10^6)然后f(10^12) = (f(10^6))^(10^6) 计算f(n)...我通过删除任何5和相应的2来计算阶乘,以便删除所有尾随零.
但我得到了错误的答案.
方法有问题还是有些愚蠢的错误?

代码供参考

long long po(long long n, long long m, long long mod) {
    if (m == 0) return 1;
    if (m == 1) return n % mod;
    long long r = po(n, m / 2, mod) % mod;
    if (m % 2 == 0) return (r * r) % mod;
    return (((r * r) % mod) * n) % …
Run Code Online (Sandbox Code Playgroud)

c algorithm math

5
推荐指数
1
解决办法
715
查看次数

标签 统计

algorithm ×2

c ×2

combinatorics ×1

math ×1