题目描述 求n位01串含连续至少2个1的串的个数。 输入 第一行是一个整数K(K≤10000),表示样例的个数。 每行样例是一个整数n(1≤1000000)。 输出 每行输出一个样例的结果,因为数目可能很大,请对109+7取模。 样例输入 5 1 2 3 4 1000000 样例输出 0 1 3 8 782550144 |
||
所用算法:递归
遇到困难:
1、思路的构建
2、超时
原始代码如下:
#include<stdio.h>
const int t = 1000000007;
int a[1000001];
void IN(int n);
int main()
{
int K;
scanf("%d", &K);
while (K--) {
int n;
scanf("%d", &n);
IN(n);
printf("%d\n", a[n]);
}
return 0;
}
void IN(int n)
{
a[1] = 0;
a[2] = 1;
int i;
int k = 1;
for (i = 3; i <= n; i++) {
k *= 2;
if (k > t)k %= t;
a[i] = ((a[