2017浙工大之江學院校賽 C 組合數學 思維

2021-08-02 00:13:16 字數 1389 閱讀 1856

time limit: 1 sec  

memory limit: 128 mb

submit: 105  

solved: 43 [

submit][

status][

web board]

zjc的acgirls隊的隊員最近比較忙,為了能夠取得更好的比賽成績,他們制定了乙個m天a掉n題的計畫,a掉一題可以是這m天的任何時候。

為了表示對acmer事業的熱愛,隊長wc要求每天必須至少要ac掉k題,這m天每天ac掉的題數可以用乙個m元組表示。

設不同的m元組一共有c個,請問c的末尾有多少個0?(如果c是0,輸出0)

多組測試資料,處理到檔案結束。(測試例數量<=160000)

輸入的每一行是乙個測試例,分別是m、n和k(0<=m,n,k<=1e9),含義如前所述。

每組測試例中

m元組的數量的末尾

0的個數,佔一行。

3 11 0

3 11 1

999 99999 4

0

05

思路:求組合數後面有多少個零,先說組合數怎麼求,把n分成m份,每份要大於等於k,問有多少種分法。題意可轉化為把n-m*k分成m份有多少種分法,考慮插板法求解,要分成m份就要插m-1個板,由於兩個板之間可以為空,就可以轉化為n-m*k+m-1個空裡選出m-1個放板。

這樣組合數就可以求得為c(n-m*k+m-1,m-1)。

然後考慮如何求組合數末尾有多少0,可以轉化為求分子有多少0,分母有多少0,然後做差,由於分子分母都是階乘,然後可以轉化為求因數中有多少個5和2,然後取較小的那個,為什麼這麼轉化呢,因為個位數(不考慮0)中相乘能產生末尾0的只有2和5,而10、20、100和其他數相乘能產生末尾零的非個位數都可以拆分成2和5乘積的形式,因此階乘的所有數的因子中有乙個2和5就能在末尾產生乙個0.

**:

#include#define ll long long

#define pi acos(-1)

#define maxn 100010

#define inf 0x3f3f3f3f

using namespace std;

typedef pairp;

ll solve(ll k,int d)

return ans;

}int main()

{ ll n,m,k;

while(~scanf("%lld%lld%lld",&m,&n,&k))

{ n=n-m*k+m-1;

m--;

if(n

2019浙工大迎新賽

yukikaze的復仇 題意 題解 begin 設 delta x y,sum 糖果和,a為yurikaze吃的糖果,b為suzukaze吃的糖果 題意變為求 ans delta a b 0且最小 開始喜聞樂見地推公式,ans delta sum 2 b 0且最小,即求乙個最大的2 b 至於黏在一起...

19浙工大計算機考研經驗

我本科是一所普通的二本院校,考研想著只要成功了,就給學弟學妹們一點經驗,方便大家參考,但是我的經驗不一定是最適合你的,只是一條路,下面我說說我的經驗。首先是初試 我是從三月份開始正式準備考研的,3 6月初3個月時間,主要是課本基礎,數學我看的就是那種數學基礎課,沒有跟大眾一樣就跟著名師,因為適合自己...

之江學院校賽 qwb與學姐 最大生成樹 LCA

題目鏈結 思路 有時候樹上的問題用lca比最短路那些演算法要高效的多.題目中要求從a到比路徑的最大值,那麼這個值肯定在圖中所有短構成的乙個最大生成樹上 首先乙個連通圖可以滿足任意兩點互相到達,其次又滿足路徑盡可能的大 所以對於這個題我們先要求最大生成樹.其次,k比較大,如果用樸素的lca求的話每次o...