題目連結(jié):
題目大意:
輸入有多列,每列給定兩正整數(shù) n 、 P(n 的「位數(shù)長」 ≦ 10000,2 ≦ P ≦ 10007),試問 n 個相異的數(shù)字在隨機打亂之後會是排序好的狀態(tài)之機率為何?假設(shè)答案形為 1 ÷ answer ,則我們輸出 answer。因為答案可能很大,所以將其模 P 後輸出。
範(fàn)例輸入:
116 6733
881 4073
881 8803
521 9539
867 877
範(fàn)例輸出:
2896
763
2968
7738
31
解題思維:
n 個相異的數(shù)字隨機打亂的狀態(tài)數(shù)有 n!。而已排序好的狀態(tài)只有一種,因此機率為 1 ÷ n!。所以所求即為 n! 模 P 之值。
可以看到當(dāng) n 值 ≧ P 時,n! 模 P 會等於 0。所以我們即使 n 值很大,我們只要先行判斷便可以解決。
剩下的 n < P 的情況,我們直接一邊計算一邊求餘便可以求得 n! 模 P 之值。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。