1. 程式人生 > >Choose and divide(數論)(組合數學)

Choose and divide(數論)(組合數學)

題目大意:給出  p ,q, r, s這四個數,C(m, n) = m! / (m − n)! n!   ,讓你求解   C(p, q)by C(r, s)  ,即兩個階乘相除。

思路:(   p!*s!*(r-s)!  ) /(  q!*(p-q)!*r!  )   

篩法求素數,唯一分解定理,用函式實現,從而求其各種階乘,程式碼如下

#include<iostream>//唯一分解定理
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn = 1000005;
int prime[maxn],flag[maxn],e[maxn],num=0;
//篩法求素數
void Init()
{
    for(int i=2;i<=maxn;i++)
    {
        if(flag[i])
            continue;
        prime[num++]=i;
        for(int j=2;i*j<=maxn;j++)
            flag[i]=1;
    }
}
//計算因子的總個數
void add_integer(int n,int d)
{
    for(int i=0;i<num;i++)
    {
        while(n%prime[i]==0)
        {
            n/=prime[i];
            e[i]+=d;//因為其指數為d,所以每個因子的指數為d
        }
        if(n==1)
            break;
    }
}
//計算階乘和除以階乘
void add_factorial(int n,int d)
{
    for(int i=1;i<=n;i++)
        add_integer(i,d);
}
int main()
{
    Init();
    int p,q,r,s;
    while(~scanf("%d%d%d%d",&p,&q,&r,&s))
    {
        memset(e,0,sizeof(e));
        add_factorial(p, 1);
        add_factorial(q, -1);
        add_factorial(p-q, -1);
        add_factorial(r, -1);
        add_factorial(s, 1);
        add_factorial(r-s, 1);
        double ans = 1.0;
        for(int i=0;i<num;i++)
            ans*=pow(prime[i],e[i]);
        printf("%.5f\n",ans);
    }
    return 0;
}

相關推薦

Choose and divide(數論)組合數學

題目大意:給出  p ,q, r, s這四個數,C(m, n) = m! / (m − n)! n!   ,讓你求解   C(p, q)by C(r, s)  ,即兩個階乘相除。 思路:(   p!*

數論Choose and Divide, UVa10375 【組合數學】【唯一分解定理】【精度】

唯一分解定理 #include<bits/stdc++.h> using namespace std; int p,q,r,s,prime[10005],cnt,e[10005];boo

Codeforces 689E Mike and Geometry Problem組合數學

題意: 給你n個x軸上的線段,在其中選k個線段,對於所有的可能方案,總共有多少點次被覆蓋,也就是說同一個點如果被不同的方案所覆蓋還是要被算在答案裡的。 這個題首先我們要把線段的端點離散化,用map就可以,對於某一段,我們可以算出被多少條線段覆蓋,假

A - Dogs and Cages HDU - 6243組合數學

col class div 所有 思路 clu ac代碼 cage 化簡 題意:在1—n的數字,放入編號為1—n的框中,每個框只放一個數字,問數字與所放的框的編號不同的個數的期望值。 思路:在1—n中任選一個數字,設為k 那麽 k 排到非k編號的框中的方案數為 n!-(

hdu2048神、上帝以及老天爺 and hdu2049不容易系列之(4)——考新郎解題報告---錯排+組合組合數學

                                     神、上帝以及老天爺 Ti

HihoCoder1639 : 圖書館[Offer收割]編程練習賽36組合數學

其中 log 排列 需要 相同 clas pre 整數 合數 描述 東方圖書館中有n種書,其中第i(1<=i<=n)種有a[i]本,同一種的兩本書我們認為是相同的。 東方圖書館將要搬家,現在需要把所有書排成一列。問有多少種排列。 東方圖書館並不關心具體

1119 機器人走方格 V2 組合數學

費馬小定理 a* inpu 結果 using F12 color str pre M * N的方格,一個機器人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出Mod 10^9 + 7的結果。 Input 第1行,2個數M,

N - Binomial Showdown 組合數學

rmi size iat 代碼 ble sample con The 思路 Description In how many ways can you choose k elements out of n elements, not taking order into acc

Rikka with Prefix Sum組合數學

時間 分享圖片 ima top long pla res hang nal Rikka with Prefix Sum 題目描述 Prefix Sum is a useful trick in data structure problems. For exam

數組組合數學

span 100% 簡單 ios 格式 題意 ... clu using 數組(數學) 【問題描述】 fabdec 有?個長度為 n 的數組 \(a[]\)(下標 1-n), 初始時都是 0。 fabdec 隨機了?個 1 到 n 的隨機數 x,並且把 \(a[x]++\)

【BZOJ1485】[HNOI2009]有趣的數列組合數學

sin printf fin std 個數 有趣 clu using -i 【BZOJ1485】[HNOI2009]有趣的數列(組合數學) 題面 BZOJ 洛谷 題解 從小往大填數,要麽填在最小的奇數位置,要麽填在最小的偶數位置。 偶數位置填的數的個數不能超過奇數位置填的數

poj1496 Word Index / poj1850 Code組合數學

poj1850 Code 題意:輸出若干個給定的字串($length<=10$)在字典序中的位置,字串中的字母必須嚴格遞增。 讀取到非法字串時,輸出“0”,終止程式。(poj1496:繼續讀取) 我們分成2種情況討論字典序小於給定字串的字串個數 1.長度比給定字串小 其實長度為$i$

Newcoder 109 C.運算元組合數學

Description 給定長度為 n n n的陣列

hdu2082找單詞解題報告---母函式組合數學

找單詞 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10817  

hdu2079選課時間解題報告---母函式/生成函式組合數學

                                          &

【CodeForces - 340C】Tourist Problem 組合數學

Iahub is a big fan of tourists. He wants to become a tourist himself, so he planned a trip. There are n destinations on a straight road th

Newcoder 144 C.Generation I組合數學

Description 初始有nnn個空集編號為111~nnn,nnn次操作,第iii次操作會對所有編號介於[i,n][i,n][i,n]之間的集合插入一個介於[1,m][1,m][1,m]之間的整數x

Newcoder 148 D.Rikka with Prefix Sum組合數學

Description 給出一個長度為nnn的序列AAA,初始為000,有mmm次操作,操作分三種: 1LRw:1\ L\ R\ w:1LRw:區間[L,R][L,R][L,R]均加上www 2:2:2

【NEUQ2083】Travel組合數學

題目連結 2083: Travel 描述 題目描述: 魔方國有nn座城市,編號為1\sim n1∼n。城市之間通過n-1n−1條無向道路連線,形成一個樹形結構。 瀾瀾打算在魔方國進行mm次旅遊,每次遊覽至少一座城市。為了方便,每次旅遊遊覽的城市必須是連通的。此外,瀾

2018.10.04 NOIP模擬 排隊組合數學

描述 在成都某中學有m個男生與n個女生排隊,這個學校的女生比較古怪,從某個位置(包含這個位置)開始往前數,男生的數量超過了女生的數量,女生會感覺不安全,於是會大叫起來,為了構建和諧校園,安排隊伍時應該避