問題
相鄰的bit個數
當前有0和1構成的數列S。S的第一個數是a1, 最後的數是an。S的相鄰bit數可以按如下方式求得:
a1a2 + a2a3 + a3a4 + ...
利用這個公式可以求得數列S中相鄰的1的個數。比如說011111101的相鄰bit個數爲5,11110110是4, 1010101是0。
當給出數列S的長度N和K時,請求一下長度爲 N的數列中,相鄰的bit個數爲K的數列S。
輸入
第一行給出N和K。(0 ≤ K < N ≤ 1,000)
輸出
第一行輸出滿足條件的數列S的個數除以100,000,000的餘數。
案例輸入
5 2
案例輸入
6
案例說明
有11100,01110, 00111, 10111, 11101, 11011。
#include<stdio.h>
#define MAX 101
int D[MAX][MAX][20];
int main(){
int n,k;
int i,j;
int t;
int tc;
D[1][0][0]=1;
D[1][0][1]=1;
n=100;
for(i=2;i<=n;i++){
for(j=0;j<i;j++){
D[i][j][0]=D[i-1][j][0]+D[i-1][j][1];
D[i][j][1]=D[i-1][j][0]+D[i-1][j-1][1];
}
}
scanf("%d",&t);
for (tc = 0; tc < t; tc++){
scanf("%d%d", &n, &k);
printf("%d\n", D[n][k][0] + D[n][k][1]);
}
return 0;
}