hihocoder #1318 : 非法二进制数

来源:互联网 发布:知乎 俄罗斯电影 编辑:程序博客网 时间:2024/05/19 18:40
                                               

#1318 : 非法二进制数


题目链接:点击打开链接
思路:简单的dp,算出n位的总数,根据0面可以接1或0,1后面只能接0,公式为dp[i][0] = (dp[i-1][0] + dp[i-1][1])和dp[i][1] = dp[i-1][0]算出符合的个数,ans=总数-合法
代码:
#include<iostream>using namespace std;const int mod = 1e9+7;long long dp[101][2];int main(){int n;while(cin>>n){dp[0][0] = dp[0][1] = 1;for(int i = 1;i < n; i ++){dp[i][0] = (dp[i-1][0] + dp[i-1][1]) % mod;dp[i][1] = dp[i-1][0];}long long ans = 1,num = 0;num = (dp[n-1][0] + dp[n-1][1]) % mod;for(int i = 1; i <= n; i ++){ans = (ans*2)%mod;}cout<<(ans-num+mod)%mod<<endl;} } 

0 0
原创粉丝点击