Description
小X 離開家的時候忘記帶走了錢包,掉下的硬幣在桌子上排成了一列。正在等着哥哥回來的小Y坐在桌子旁邊,無聊地翻着桌子上的硬幣。
出於某種愛好,小Y 一次必定會同時翻轉M 枚硬幣。因爲小Y 是一個愛動腦的小學生,這樣進行了若干次以後她很快想到了一個問題:有多少種方法可以在K 次翻轉後把硬幣由原來的狀態變成如今這樣呢?
由於小Y 是個好學的小學生,她只須要你告訴她方案數對1000000007 取模的值以方便她進行驗算就能夠了。code
Input
第一行,包含三個字符N;K;M,表示硬幣的數量,翻轉的次數和每次翻轉的硬幣數量。
第2 3 行,包含N 個字母,表示硬幣在一開始的狀態和最終要變成的狀態。1 表示正面而0 表示背面。ip
Output
一行包含一個整數,表示方案數對1000000007 取模的值。input
Sample Input
3 2 1 100 001
Sample Output
2 樣例解釋: 100->101->001 100->000->001
Data Constraint
• 對於30% 的數據,N <=4; 0 <= K <= 5。 • 對於60% 的數據,N <= 10。 • 對於100% 的數據,1 <= N <= 100; 0 <= K <= 100; 0 <= M <= N。
io