description
眾所周知,萌萌噠六花不擅長數學,所以勇太給了她一些數學問題做練習。但是今天六花醬不想做數學題,於是他input們開始打牌。現在他們手上有m張不同的牌,牌有兩種:普通牌和功能牌。功能牌一共有n張,每張功能牌都有乙個
屬性值wi,保證sigma(wi)=m,1<=i<=n現在勇太將這m張牌隨機打亂(一共有m!種不同的順序)。一開始,六花先從
牌堆頂端取一張牌。接著每回合六花可以選擇手中的一張牌打出,如果這張牌是普通牌,那麼什麼都不會發生;如
果這種牌是功能牌,那麼六花需要從牌堆頂端再取wi張牌。重複這個過程直到六花手中沒有手牌或六花要摸牌的時
候牌堆已經空了,如果是前者,則勇太勝利,否則六花勝利。舉例來說,如果牌堆是。
2)打出,再取三張牌,手中的牌為。 3)打出這三張牌,還需要再取兩張,取到第二張的時候牌堆中已沒有牌,六花勝利。
而如果牌堆是,不難發現是勇太大勝利。現在,六花想要知道,這m!種順序中,有多少種是能讓自
己取得勝利的呢。當然這個問題對萌萌噠六花來說實在是太雉了,所以她來向你尋求幫助,你能幫幫她嗎。
第一行乙個整數n。 第二行他個空格隔開的正整數wi。 通過輸入你可以自己算出來m=sigma(wi),1<=i<=nsample input sample output hintn≤40,1output
輸出乙個整數表示答案,答案可能很大,你只需要輸出對998244353取模後的結果。
樣例解釋一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 啦。描述 話說花神這天又來講課了。課後照例有超級難的神題啦 我等蒟蒻又遭殃了。花神的...