400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

信息学奥赛一本通1312:【例3.4】昆虫繁殖-创新互联

【题目链接】

ybt 1312:【例3.4】昆虫繁殖
附加条件:该题结果可以由long long类型表示

目前成都创新互联已为千余家的企业提供了网站建设、域名、虚拟空间、网站托管维护、企业网站设计、长治网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。【题目解析】

该题“每对成虫过x个月产y对卵”这句有误,实际应该为“每对成虫过x个月每个月产y对卵”,一本通书第五版P215这道题就是这样写的。OJ抄录时少了“每个月”三个字,导致理解困难。

【题目考点】 1. 递推 【解题思路】

首先要理解题意
该题中指说的虫无论是题目还是结果,都是以“对”为单位的,不涉及“一对是两个”这种换算。
我们认为将虫子分为三种形态:卵,幼虫(不能产卵),成虫(可以产卵)
题目中每对卵要过2个月长成成虫,每对成虫过x个月每个月产y对卵这句话应该这样理解:

假设这句话中x为3,y为1,我们可以假定有以下具体场景
一对成虫在1月初产了一对卵,这对卵过2个月,在3月初变为一对幼虫,再过3个月(也就是x个月),在6月初变为一对成虫,这对成虫在6月初产了一对卵。
这对新的卵过了2个月在8月初变为幼虫,在11月初变为成虫,并产卵。

我们把不能产卵的虫称为幼虫,这样更方便理解。

设数组a与b,a[i]表示第i个月有多少对虫,b[i]表示第i个月出生的卵的数量。

假设x是3,写出具体例子理解一下:
1月初有一对刚刚从卵变成的幼虫,3个月(也就是x个月后)在4月初这对幼虫变为成虫,并产卵。

幼虫在x个月后,也就是第x+1月才能开始产卵。那么前x个月只有一对虫,对所有i满足 1 ≤ i ≤ x 1\le i\le x 1≤i≤x,有a[i]=1,b[i]=0

【题解代码】 解法1:递推
#includeusing namespace std;
int main()
{long long a[101], b[101];//a[i]:第i个月有多少对虫  b[i]:第i个月出生的卵的数量 
    int x, y, z;
    cin >>x >>y >>z;
    for(int i = 1; i<= x; i++)//前x个月只有第一对幼年虫 
    {a[i] = 1;
        b[i] = 0;
    }
    for(int i = x + 1; i<= z + 1; i++)//求第z个月后,即第z+1个月 
    {b[i] = a[i-x]*y; 
        a[i] = a[i-1]+b[i-2];
    }
    cout<< a[z+1]<< endl;
    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:信息学奥赛一本通1312:【例3.4】昆虫繁殖-创新互联
当前地址:http://mzwzsj.com/article/ddsijs.html

其他资讯

让你的专属顾问为你服务