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 }

 

你可能感兴趣的:(dp)