列表

详情


HJ37. 统计每个月兔子的总数

描述

有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少
数据范围:输入满足

输入描述

输入一个int型整数表示第n个月

输出描述

输出对应的兔子总数

示例1

输入:

3

输出:

2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 2ms, 内存消耗: 284KB, 提交时间: 2022-02-08

#include <stdio.h>

int num_rabbit(int month)
{
    int i = 0;
    int bir1 = 0;
    int bir2 = 0;
    int old = 0;
    int num = 0;
    for (i = 1; i <= month; i++)
    {
        if (i == 1)
        {
            bir1 = 1;
            num = 1;
        }
        else
        {
            int tmp = 0;
            num = num + old + bir2;
            old = old + bir2;
            tmp = bir1;
            bir1 = old;
            bir2 = tmp;
        }
    }
    return num;
}

int main()
{
    int month = 0;
    while(scanf("%d",&month) != EOF)
    {
        printf("%d\n",num_rabbit(month));
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2021-11-19

#include <stdio.h>
int main(){
	int input,value[31]={0},i;
	value[1]=value[2]=1;
//     printf("%d\n",value[1]);
//     printf("%d\n",value[2]);
    for(i=3;i<=31;i++){
		value[i]=value[i-1]+value[i-2];
	}
	while(scanf("%d",&input)!=EOF){
		
		printf("%d\n",value[input]);
	}
	
	return 0;
}

上一题