1312:【例3.4】昆虫繁殖
1312:【例3.4】昆虫繁殖

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 5661 通过数: 2702
【题目描述】
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?0≤X≤20,1≤Y≤20,X≤Z≤50。

【输入】
x,y,z的数值。

【输出】
过Z个月以后,共有成虫对数。

【输入样例】
1 2 8
【输出样例】
37

//1312:【例3.4】昆虫繁殖
//当x=1,y=20,z=50时,从第39个月开始,数据就超出long long数据范围了,所以要考虑用高精度加、乘法保存结果
#include<iostream>
using namespace std;
int x,y,z,i,j;
int a[61][100],b[61][100];
//因为假设x=1,y=20,z=50,到第39个月时,数字已经超过long long范围了。
//第50个月成虫有1380978785345860024766961对。
//所以用数组保存数字,采用高进度加法和高精度乘法
//a[i][100]代表第i个月有成虫多少对,b[i][100]代表第i月有幼虫多少对
void jia(int a[61][100],int b[61][100],int m,int n) //a[m][]+b[n][],结果保存到a[m+1][]中
{int i=1;while(i<=a[m][0]||i<=b[n][0]){a[m+1][i]=a[m+1][i]+a[m][i]+b[n][i];a[m+1][i+1]+=a[m+1][i]/10;a[m+1][i]%=10;i++;}a[m+1][0]=a[m][0]>b[n][0]?a[m][0]:b[n][0];//更新a[m+1][]数组长度,相加后a数组长度为原来两个数组里长度较长的那个,即数字位数较多的那个 if(a[m+1][a[m+1][0]+1]>0)//处理进位,两个大整数相加,最多进一位。 a[m+1][0]++;return;
}
void chengy(int a[61][100],int b[61][100],int m,int x,int y) //b[m]=a[m-x]*y,结果保存到b[m][]中
{int i=1;while(i<=a[m-x][0]){b[m][i]+=a[m-x][i]*y; //x个月前的成虫,每对成虫产y对卵 b[m][i+1]+=b[m][i]/10;b[m][i]%=10;i++;}b[m][0]=a[m-x][0]; //第m个月的产卵数的位数等于第m-x个月(x个月前)的成虫数的位数。 while(b[m][b[m][0]+1]>=1)//处理最高位乘以y的进位问题 {b[m][0]++;b[m][b[m][0]+1]=b[m][b[m][0]]/10;b[m][b[m][0]]%=10;}return;
}
void printa(int a[61][100],int m) //输出二维数组第m维代表的数字
{if(a[m][0]==0){cout<<"0";return;}int j;for(j=a[m][0];j>=1;j--)cout<<a[m][j];//cout<<endl;return;
}int main()
{cin>>x>>y>>z;for(i=1;i<=x;i++){a[i][0]=1;//a[i][0]记录第i个月成虫对数在数组中要保存几位。 a[i][1]=1;//a[i][1]//对前x个与初始化,成虫只有一对。a[i][1]=1表示成虫只有一对,a[i][0]=1表示数组只有1位 b[i][1]=0;b[i][0]=0; //printa(a,i); //输出第i个月的成虫对数 //cout<<" ";//printa(b,i);//输出第i个月产的卵的对数 //cout<<endl;}for(i=x+1;i<=z+1;i++) //题目中为求过z个月后,成虫数量,即第z+1个月,成虫的对数 {//a[i]=a[i-1]+b[i-2];//两个月之前的幼虫已经长成成虫 jia(a,b,i-1,i-2);//b[i]=a[i-x]*y;//x个月前的成虫,每对成虫又产卵y对 chengy(a,b,i,x,y);//printa(a,i); //输出第i个月的成虫对数 //cout<<" ";//printa(b,i);//输出第i个月产的卵的对数 //cout<<endl;}i--;//循环之后,i的值变成i+1; printa(a,i); //输出第i个月的成虫对数 cout<<endl;//cout<<" ";//printa(b,i);//输出第i个月产的卵的对数 return 0;
}

信息奥赛一本通1312:【例3.4】昆虫繁殖相关推荐

  1. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 提交数: 130     通过数: 68 ...

  2. 信息奥赛一本通 三角形最佳路径问题 (1288) 题解

    信息奥赛一本通 三角形最佳路径问题 (1288) 题解 时间限制: 1000 ms 内存限制: 65536 KB 题目描述 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 ...

  3. 信息奥赛一本通的递推练习

    信息奥赛一本通的递推练习 递推与动态规划 1313:位数问题 1314:过河卒 1194:移动路线 1196:踩方格 递推与动态规划 递推解决的问题中满足最优化原理的也是属于动态规划范畴 1313:位 ...

  4. 信息学奥赛一本通 1312:【例3.4】昆虫繁殖

    [题目链接] ybt 1312:[例3.4]昆虫繁殖 附加条件:该题结果可以由long long类型表示 [题目解析] 该题"每对成虫过x个月产y对卵"这句有误,实际应该为&quo ...

  5. 2038:最大数位置(题目来源于信息奥赛一本通官网)

    2038:[例5.5]最大数位置 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4876     通过数: 3175 [题目描述] 输入n 个整数,存放在数组a[ ...

  6. 【算法•日更•第十四期】信息奥赛一本通1592:【例 1】国王题解

    废话不多说,直接上题: 1592:[例 1]国王 时间限制: 500 ms         内存限制: 65536 KB 提交数: 290     通过数: 111 [题目描述] 原题来自:SGU 2 ...

  7. 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6257     通过数: 3483 [题目描述] 设有N个选手进行循环比赛 ...

  8. 信息奥赛一本通(1311:【例2.5】求逆序对)

    1311:[例2.5]求逆序对 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 26125     通过数: 5883 [题目描述] 给定一个序列a1,a2,-,a ...

  9. 信息奥赛一本通(1310:【例2.2】车厢重组)

    1310:[例2.2]车厢重组 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 18621     通过数: 11419 [题目描述] 在一个旧式的火车站旁边有一座 ...

最新文章

  1. 中下层确实没钱了,消费枯竭!?
  2. 亲历惊心48小时抢救35亿交易数据
  3. sed在替换的时候,使用变量中的值?如何在sed实现变量的替换?获取到变量中的值?...
  4. MapStruct解决数据传输对象转换的繁琐
  5. 前端学习(2002)vue之电商管理系统电商系统之绘制商品分类的级联选择器
  6. react领域里面jsx中的style的值为什么放到了{}中
  7. [置顶]android ListView包含Checkbox滑动时状态改变
  8. Python接口自动化之cookie、session应用
  9. 穷人想变富,富人想变得更富
  10. ScheduledThreadPoolExecutor
  11. 不抛出异常的swap
  12. 计算机网络网络层之IP协议(5)——IP子网划分与子网掩码
  13. 过程工业中的smartLink HART-IP
  14. css选择器有哪些?
  15. 【车牌识别】RGB颜色模型车牌识别【含GUI Matlab源码 888期】
  16. IDEA Java代码注释规范
  17. python 利用python处理excel文件
  18. 流体动态海报 | mixlab设计黑客
  19. 基于LPRNet的车牌识别算法移植与测试
  20. git 克隆到指定分支

热门文章

  1. 宏#define边缘效应(边际效应)
  2. 人脸检测颜值软件_百度AI人脸识别测颜值源码
  3. 华为matebook电脑屏幕亮度动态变化的解决办法
  4. C语言:计算油费.2021-07-13
  5. Bitlock手动锁定-可自适应移动驱动器脚本
  6. 初识基于 Web 的可视化编程工具Google Blockly
  7. Shell命令-网络操作之基础之scp、wget
  8. 冯氏竟是司马迁的后裔!冯氏历史上还出过哪些战功赫赫的大将军?
  9. linux进程概念(中)
  10. 肖风:区块链是驱动社会数字化迁徙的重要工具