題意:n種不同的硬幣,每種num[i]個。問把這些硬幣擺成一條線共有多少種擺法。
解:設硬幣共有sum個,不考慮相同硬幣是同一種情況。
組合數學上的定理(這個忘了,又重新翻的,看來得做題才能加深印象):令s是乙個多重集合,又k個不同型別的元素,各元素的重數沒別為n1,n2,...,nk。設s的大小為n = n1 + n2 + ... + nk。則s的排列數為: n! / (n1!*n2!*...*nk!);
a = sum! % mod, b = ∑num[i]! % mod;
ans = a/b%mod;
根據模運算公式
ans = (a%mod * x%mod)%mod;
x為b的乘法逆元,即 b*x = 1(mod mod);
可以用擴充套件歐幾里德求x,然後解出ans。
碰到一道不錯的擴充套件歐幾里德題目 whu 1338
題意 n種不同的硬幣,每種num i 個。問把這些硬幣擺成一條線共有多少種擺法。解 設硬幣共有sum個,不考慮相同硬幣是同一種情況。組合數學上的定理 這個忘了,又重新翻的,看來得做題才能加深印象 令s是乙個多重集合,又k個不同型別的元素,各元素的重數沒別為n1,n2,nk。設s的大小為n n1 n2...
一道this的題目
請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...
一道題目 intel
從序列中找四個四字子串形成十進位制數使之乘積最大 就是求四個最大的?我目前只想到如下辦法。這個題並不是關於複雜的演算法,其本意是要利用並行處理,但目前尚未考慮到 除了其中比較求最小值部分有希望用simd include int g teststring int main void int picke...