CodeForces 396A 數論 組合數學

2022-09-24 03:00:07 字數 1432 閱讀 1837

好久沒做數論的東西了,乙個獲取素數的預處理跟素因子分解寫錯了,哭瞎了,呵呵,

首先ai最大值為10^9,n為500,最壞的情況 m最大值為500個10^9相乘,肯定不能獲取m了,首選每乙個ai肯定是m的乙個因子,然後能分解就把ai給分解素因子,這樣全部的ai都分解了 就能得到m的 所有素因子 以及 所有素因子的個數,題目求的 是n個因子的 不同序列的個數,所以每次 只能選出n個因子,這n個因子由素因子組成,其實就是對應每乙個素因子 把它分配在n個位置上有多少種分法,然後所有素因子分法的 乘積就是最終的答案,至於怎麼分配 其實就是隔板法

隔板法里有個是 允許有空的,這道題也是允許有空的

例1將20個大小形狀完全相同的小球放入3個不同的盒子,允許有盒子為空,但球必須放完,有多少種不同的方法? 分析:本題中的小球大小形狀完全相同,故這些小球沒有區別,問題等價於將小球分成三組,允許有若干組無元素,用隔板法. 解析:將20個小球分成三組需要兩塊隔板,因為允許有盒子為空,不符合隔板法的原理,那就人為的再加上3個小球,保證每個盒子都至少分到乙個小球,那就符合隔板法的要求了(分完後,再在每組中各去掉乙個小球,即滿足了題設的要求)。然後就變成待分小球總數為23個,球中間有22個空檔,需要在這22個空檔裡加入2個隔板來分隔為3份,共有c(22,2)=231種不同的方法. 點評:對n件相同物品(或名額)分給m個人(或位置),允許若干個人(或位置)為空的問題,可以看成將這n件物品分成m組,允許若干組為空的問題.將n件物品分成m組,需要m-1塊隔板,將這n件物品和m-1塊隔板排成一排,佔n+m-1位置,從這n+m-1個位置中選m-1個位置放隔板,因隔板無差別,故隔板之間無序,是組合問題,故隔板有cn+m-1 m-1種不同的方法,再將物品放入其餘位置,因物品相同無差別,故物品之間無順序,是組合問題,只有1種放法,根據分步計數原理,共有cn+m-1 m-11=cn+m-1 m-1種排法

假設素因子p有 k個,那麼分法就是 c[k + n - 1][n - 1],累積就可以了

const ll mod = 1000000007;

int n;

map mp;

map ::iterator it;

const int maxn = 15000;

int c[maxn + 1][500 + 1];//m最大大概為x * 10^4500左右,所以大概需要2^15000

void initial()

for(i=1; i<=maxn; ++i)

}#define n 50009

int prime[n];

bool isprime[n];

int nprime = 0;

void make_prime()

void divide(int x)

} if(x != 1)mp[x]++;

}void init()

bool input()

return true;

}void cal()

cout<

方程(1)(數論 組合數)

description 求關於x1,x2,xn 的方程 x1 x2 xn k 的非負整數解的個數。input 僅一行,包含 個正整數n,k。output 乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814的結果。分析 這其實是乙個組合數的模型 有n種元素,每種元素可不...

組合數取模 數論

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 time limit 1 sec memory limit 128 mb submit 113 solved 39 submit status web board 給出n,m,p,求c n,m mod p 1 m n 10 6,1 p 1...

遞迴分蘋果組合數論

問題 將m個相同的蘋果放入n個相同的盤子 一共有多少種放法?注和是相同的一種。分析 所有不同的擺放方法可以分為兩類 至少有乙個盤子為空和所有盤子都不空。對於至少空著乙個盤子的情況,則n 個盤子擺放m 個蘋果的擺放方法數目與況,則n 個盤子擺放m 個蘋果的擺放方法數目等於n 個盤子擺放m n 個蘋果的...