山科大judge online 1085 : 兔子的繁殖问题

来源:互联网 发布:md5算法c 实现 编辑:程序博客网 时间:2024/04/30 02:27

Description

假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?

这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。

Input

输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。

Output

输出为n行,每行为第m个月后的兔子总数。

Sample Input

6
1 2 3 4 5 10

Sample Output

1
2
3
5
8
89

HINT

超时了吧!

使用递归计算菲波那契序列,这合适吗?

用数组写比较方便,用循环直接算也不超时。

Append Code

心路历程:这个题我使用两个数组,第一个数组将所有的数据都存入,然后用第二个数组直接对下标进行索引,大大减少时间,
PS:这个题我为了防止出错,前面加了实际不需要的声明。
#include<stdio.h>#include<string.h>#include<ctype.h>int main(){    int i, j, k, m;    int s[100] = {0, 1, 2}, x[100];    for(i = 3; i <= 45; i++)        s[i] = s[i - 1] + s[i - 2];    scanf("%d", &m);    for(i = 0; i < m; i++)        scanf("%d", &x[i]);    for(i = 0; i < m; i++)        printf("%d\n", s[x[i]]);    return 0;}


0 0
原创粉丝点击