bzoj4735 數論 你的生命已如風中殘燭

2021-09-13 11:18:19 字數 1918 閱讀 6213

description

眾所周知,萌萌噠六花不擅長數學,所以勇太給了她一些數學問題做練習。但是今天六花醬不想做數學題,於是他

們開始打牌。現在他們手上有m張不同的牌,牌有兩種:普通牌和功能牌。功能牌一共有n張,每張功能牌都有乙個

屬性值wi,保證sigma(wi)=m,1<=i<=n現在勇太將這m張牌隨機打亂(一共有m!種不同的順序)。一開始,六花先從

牌堆頂端取一張牌。接著每回合六花可以選擇手中的一張牌打出,如果這張牌是普通牌,那麼什麼都不會發生;如

果這種牌是功能牌,那麼六花需要從牌堆頂端再取wi張牌。重複這個過程直到六花手中沒有手牌或六花要摸牌的時

候牌堆已經空了,如果是前者,則勇太勝利,否則六花勝利。舉例來說,如果牌堆是。

2)打出,再取三張牌,手中的牌為。 3)打出這三張牌,還需要再取兩張,取到第二張的時候牌堆中已沒有牌,六花勝利。

而如果牌堆是,不難發現是勇太大勝利。現在,六花想要知道,這m!種順序中,有多少種是能讓自

己取得勝利的呢。當然這個問題對萌萌噠六花來說實在是太雉了,所以她來向你尋求幫助,你能幫幫她嗎。

input

第一行乙個整數n。 第二行他個空格隔開的正整數wi。 通過輸入你可以自己算出來m=sigma(wi),1<=i<=n

n≤40,1output

輸出乙個整數表示答案,答案可能很大,你只需要輸出對998244353取模後的結果。

sample input

sample output

hint

樣例解釋一

m!種牌堆中,

m−n+1m

!​

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define mp(x,y) make_pair(x,y)

#define pll pair

#define pii pair

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return x*f;

}int stack[20]

;inline

void

write

(int x)if(

!x)int top=0;

while

(x)stack[

++top]

=x%10

,x/=10;

while

(top)

putchar

(stack[top--]+

'0');}

inline

void

pr1(

int x)

inline

void

pr2(

int x)

const

int mod=

998244353

;int

pow_mod

(int a,

int b)

return ret;

}int

getans

(int n,

int m)

intmain()

bzoj4735 你的生命已如風中殘燭

description 眾所周知,萌萌噠六花不擅長數學,所以勇太給了她一些數學問題做練習。但是今天六花醬不想做數學題,於是他 們開始打牌。現在他們手上有m張不同的牌,牌有兩種 普通牌和功能牌。功能牌一共有n張,每張功能牌都有乙個 屬性值wi,保證sigma wi m,1 i n現在勇太將這m張牌隨機...

BZOJ 3209 花神的數論題 數字DP 數論

題目大意 令sum i 為i在二進位制下1的個數 求 1 i n sum i 一道很簡單的數字dp 首先我們打表打出組合數 然後利用數字dp統計出二進位制下1的個數為x的數的數量 最後輸出 1 x logn x ans x 即可 此題的坑在於這題的組合數和數字dp的結果都是指數 對指數取模不能直接取...

BZOJ3290 花神的數論題

3209 花神的數論題 time limit 10 sec memory limit 128 mb description 背景 眾所周知,花神多年來憑藉無邊的神力狂虐各大 oj oi cf tc 當然也包括 ch 啦。描述 話說花神這天又來講課了。課後照例有超級難的神題啦 我等蒟蒻又遭殃了。花神的...