1318 非法二進位制數(dp)

2021-08-18 05:32:45 字數 761 閱讀 1299

如果乙個二進位制數包含連續的兩個1,我們就稱這個二進位制數是非法的。

小hi想知道在所有 n 位二進位制數(一共有2n

個)中,非法二進位制數有多少個。

例如對於 n = 3,有 011, 110, 111 三個非法二進位制數。

由於結果可能很大,你只需要輸出模109+7的餘數。

乙個整數 n (1 ≤ n ≤ 100)。

n 位非法二進位制數的數目模109+7的餘數。

樣例輸入

3
樣例輸出
3

可以先找合法的二進位制數,用總數減去合法的,,就是不合法的。

dp[i][1]是前i位,最後一位是1的合法二進位制數有多少。

dp[i][0]是前i位。最後一位是0的合法二進位制數有多少。

則,dp[i][1]=dp[i-1][0];

fp[i][0]=dp[i-1][1]+dp[i-1][0];

**:

#includeusing namespace std;

const int maxn=110;

const long long mod=1e9+7;

long long dp[maxn][2];

long long a[maxn];

void q(int x)

}int main()

printf("%lld\n",(a[n]+mod-(dp[n][0]+dp[n][1])%mod)%mod);

return 0;

}

hiho 1318 非法二進位制數

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 如果乙個二進位制數包含連續的兩個1,我們就稱這個二進位制數是非法的。小hi想知道在所有 n 位二進位制數 一共有2n個 中,非法二進位制數有多少個。例如對於 n 3,有 011,110,111 三個非法二進位制數。由於結果可能...

統計二進位制數 dp

題目描述 輸入乙個正整數m,請輸出從0到m中每乙個數字二進位制數中含有1的個數的總和,由於數值較大結果需要模100000.輸入格式 乙個m輸出格式 二進位制數中含有1的個數的總和s 輸入輸出樣例輸入2 輸出2輸入5 輸出7說明 提示 樣例說明 20 的資料 m 500 50 的資料 m 1000 7...

hiho 題目1 非法二進位制數 數字dp

如果乙個二進位制數包含連續的兩個1,我們就稱這個二進位制數是非法的。小hi想知道在所有 n 位二進位制數 一共有2n 個 中,非法二進位制數有多少個。例如對於 n 3,有 011,110,111 三個非法二進位制數。由於結果可能很大,你只需要輸出模109 7的餘數。乙個整數 n 1 n 100 n ...