BZOJ1072 排列perm 狀壓dp

2022-02-27 23:42:55 字數 600 閱讀 5737

給乙個數字串s和正整數d, 統計s有多少種不同的排列能被d整除(可以有前導0)。例如123434有90種排列能

被2整除,其中末位為2的有30種,末位為4的有60種。

輸入第一行是乙個整數t,表示測試資料的個數,以下每行一組s和d,中間用空格隔開。s保證只包含數字0, 1

, 2, 3, 4, 5, 6, 7, 8, 9.

每個資料僅一行,表示能被d整除的排列的個數。

7000 1

001 1

1234567890 1

123434 2

1234 7

12345 17

12345678 2913

3628800903

61398

在前三個例子中,排列分別有1, 3, 3628800種,它們都是1的倍數。

【限制】

100%的資料滿足:s的長度不超過10, 1<=d<=1000, 1<=t<=15

聽說暴力可以過,但聽說狀壓dp才是正解。。

設f[s][j]表示狀態s下【s表示已經選擇了哪些數】餘數為j的方案數,那麼f[s | (1<

很明顯,狀態s下可以通過在末尾新增乙個不在狀態中的i號數來轉移到s|(1<

bzoj1072 scoi2007 排列(狀壓dp

給乙個數字串s和正整數d,統計s有多少種不同的排列能被d整除 可以有前導0 例如123434有90種排列能 被2整除,其中末位為2的有30種,末位為4的有60種。input 輸入第一行是乙個整數t,表示測試資料的個數,以下每行一組s和d,中間用空格隔開。s保證只包含數字0,1 2,3,4,5,6,7...

hdu 1716 排列2 排列組合

問題描述 ray又對數字的列產生了興趣 現有四張卡片,用這四張卡片能排列出很多不同的4位數,要求按從小到大的順序輸出這些4位數 input 每組資料佔一行,代表四張卡片上的數字 0 數字 9 如果四張卡片都是0,則輸入結束。output 對每組卡片按從小到大的順序輸出所有能由這四張卡片組成的4位數,...

197 排列序號

是 這道題採取暴力解法會超時,應當對於原陣列的每乙個位置找到其後有多少個數比它小,然後再相加這些數與對應的權的成績。class solution long long ans 1,fac 1,cc 1 for int i len 2 i 0 i ans fac cc c i return ans 注意...