牛年求牛。
今天在网上见到这么一道题,用任何语言实现都行。
题目为:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛?
玉丰补充: 此题有一个模糊的地方,就是牛的年龄问题,可以这样理解,从小牛出生的那一年开始计算,三年后就可以生小牛了,其数据如下:
1-3 A
4 A AB
5 A AB AC
6 A AB AC AD
7 A AB AC AD AE ABB(注意,今年AB已经4岁了,所以生了一只ABB)
AB 是 A 在第4年生的,到第7年时,它4岁了,所以也生了一只ABB
# include <stdio.h> //隔几年生小牛 #define N 3 #define M 14 long ox_count = 1; int main(){ int i, n =69; printf( "input a number(max 69)\n" ); scanf( "%d" ,&n); long nums[101]; for (i = 1 ; i<= n;i ++){ if (i <= N ){ nums[i] = 1; continue ; } if (i >= 20){ //第二十年,我们伟大的母牛去了 if (i == 20){ nums[i] = nums[i - N] + nums[i -1] - 1 - nums[i -M]; } //第20到第20+N年间,没出生的牛,于是也没有死去的牛 if (i > 20 && i <= 20 + N){ nums[i] = nums[i - N] + nums[i -1] - nums[i -M]; } //第20+N年后出生的牛数,要减去20年前的牛数. if (i > 20 + N){ nums[i] = nums[i - N] + nums[i -1] - nums[i - 20 - N] - nums[i - M]; } } else { if (i < 15){ //还没到20年后,所以没有死去的牛 nums[i] = nums[i - N] + nums[i -1] ; } else { nums[i] = nums[i - N] + nums[i -1] -nums[i - M]; } } printf( "%d: %ld\n" ,i, nums[i]); ox_count = nums[i]; } printf( "total: %ld\n" , ox_count); } </stdio.h> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决