日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hiho 1318 非法二进制数 dp

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hiho 1318 非法二进制数 dp 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#1318 : 非法二進制數(shù)

時間限制:10000ms 單點時限:1000ms 內(nèi)存限制:256MB

描述

如果一個二進制數(shù)包含連續(xù)的兩個1,我們就稱這個二進制數(shù)是非法的。

小Hi想知道在所有?n?位二進制數(shù)(一共有2n個)中,非法二進制數(shù)有多少個。

例如對于?n?= 3,有 011, 110, 111 三個非法二進制數(shù)。

由于結(jié)果可能很大,你只需要輸出模109+7的余數(shù)。

輸入

一個整數(shù)?n?(1 ≤?n?≤ 100)。

輸出

n?位非法二進制數(shù)的數(shù)目模109+7的余數(shù)。

樣例輸入
3
樣例輸出
3

簡單的動態(tài)規(guī)劃。

我們可以先算出一共有多少個?合法?的二進制數(shù)。 用f[n][x]表示n位二進制數(shù),最后1位是x(x取值0或1),合法的二進制數(shù)的數(shù)目。 于是有:

f[n][0] = f[n - 1][0] + f[n - 1][1] f[n][1] = f[n - 1][0];
#include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 #define pi (4*atan(1.0)) const int N=2e3+10,M=1e6+10,inf=1e9+10; ll dp[N][2]; ll quick(ll a,int x) {ll ans=1;while(x){if(x&1)ans*=a,ans%=mod;x>>=1;a*=a;a%=mod;}return ans; } int main() {int x,y,z,i,t;scanf("%d",&x);dp[1][0]=1;dp[1][1]=1;for(i=2;i<=x;i++){dp[i][0]=(dp[i-1][1]+dp[i-1][0])%mod;dp[i][1]=dp[i-1][0];}cout<<((quick(2,x)-dp[x][0]-dp[x][1])%mod+mod)%mod<<endl;return 0; }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/jhz033/p/5602909.html

總結(jié)

以上是生活随笔為你收集整理的hiho 1318 非法二进制数 dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。