Problem Description
小铁养了一只小白兔,一只成熟的兔子每天能产下一胎兔子。每只小白兔从出生起算第三天才会开始产下新兔子。 某人领养了一只小白兔,请问第N天以后,他将会得到多少只兔子。因为这品种的兔子繁殖能力太高,小铁的兔子窝也有限,超过一百万只兔子时,只会留下后六位 数量的兔子,其余的百万只兔子会被送出。
注意n的范围 每次都跑n次会超时 在输入之前处理出来
PS:留下后六位 即ans = ans%1000000(ans 为最终答案) 注意中间过程每一步都要取余!
Input
输入有多组数据。
每组数据一行,包含一个整数n (1≤n≤100000)。
Output
对应每一组输入,输出第n天小白有多少只小白兔。
Sample Input
1
2
3
4
Sample Output
1
2
3
5
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
int a[100001];
a[1]=1;``
a[2]=2;
a[3]=3;
for(i=4;i<=100000;i++)
{
a[i]=(a[i-1]+a[i-2])%1000000;
}
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",a[n]);
}
return 0;
}
超时问题:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
int a[100001];
a[1]=1;
a[2]=2;
a[3]=3;
for(i=4;i<=100000;i++)
{
a[i]=(a[i-1]+a[i-2]);
if(a[i]>=1000000)
a[i]=a[i]%1000000;
}
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",a[n]);
}
return 0;
}