GDUT 校赛01 dp
dp记录的是不是11串
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 const int maxn=1000005; 9 const int mod=1000000007; 10 int n,m,t; 11 int dp[maxn][2],sum[maxn]; 12 void init() 13 { 14 memset(dp,0,sizeof(dp)); 15 dp[1][0]=dp[1][1]=1; 16 sum[1]=2; 17 for(int i=2;i<=maxn;i++) 18 { 19 dp[i][0]=dp[i-1][0]+dp[i-1][1]; 20 dp[i][0]%=mod; 21 dp[i][1]=dp[i-1][0]; 22 dp[i][1]%=mod; 23 sum[i]=sum[i-1]*2; 24 sum[i]%=mod; 25 } 26 } 27 int main() 28 { 29 int i,j,k; 30 #ifndef ONLINE_JUDGE 31 freopen("1.in","r",stdin); 32 #endif 33 scanf("%d",&t); 34 init(); 35 while(t--) 36 { 37 scanf("%d",&n); 38 int ans=(sum[n]-dp[n][0]-dp[n][1])%mod; 39 printf("%d\n",(ans+mod)%mod); 40 } 41 return 0; 42 }