回 帖 发 新 帖 刷新版面

主题:[讨论]求助:母牛生小牛问题

[em18][em18][em18]
[b]一头小母牛,从出生第4年起每年生一头小母牛,以此类推, 第n年是有几头母牛?[/b]
希望各位大虾快快解答!!

回复列表 (共13个回复)

沙发

此题其实不难,程序如下:
var n,m,i:longint;
begin
readln(n);
for i:=0 to n div 4 do
m:=round(exp(i*ln(2));
writeln(m);
end.

板凳

一楼的答案是错的,我试过了.......
[em20][em12][em7]
不信去看以下网址:
http://acm.tongji.edu.cn/showproblem.php?problem_id=1005

3 楼

var
  j,n:integer;
begin
  writeln('n=');
  readln(n);
  j:=n-3;
  writeln(j);
end.
别想复杂了

4 楼

这道题的其实就是一个等比数列
解析是这样的
(为了简单说明 下面的解析中 抛去了“4岁以上的牛才能生小牛”的条件)
设一头牛的年龄是n,b(n)为第
则b(n)=b(n-1)+b(n-2)+...+b(1)   (1
  b(n-1)=b(n-2)+b(n-3)...b(1)     (2
 再把(2 式代入(1 式 得到
  b(n)=b(n-1)+[b(n-2)+b(n-3)...-b(1)]
      =b(n-1)*2
其中b(1)=1
这就是等比数列了~~

5 楼

b(n)是n岁的牛可生的小牛数

6 楼

用递归算法,既第n年的牛数=第n-1的牛数+第n-2的牛数
n(1)=1;n(2)=1;

7 楼

路过,可惜我自己还不够理解,没看懂!

8 楼

我自己理解编的不知道对吗?好像有问题

9 楼

不好意思上一贴忘了上程序了
var a,b,c:integer;
   begin
       a:=12;
      repeat
        a:=a-3;
        for b:=1 to a do
            c:=c+b;
      until a=3;
    writeln(c+12);
   readln;
   end.

10 楼

建一个数组x.
x[1]=第1年的牛.
x[2]=第2年的牛.
x[3]=第3年的牛.
x[4]=可以生小牛的牛(>=4岁).

从第一年开始推,则第二年的状态:
t:=x[4];              (新生的牛)
x[4]:=x[4]+x[3];      (第3年的牛长了一岁)
x[3]:=x[2];           (第2年的牛长了一岁)
x[2]:=x[1];           (第1年的牛长了一岁)
x[1]:=t;              (新生的牛)
依此类推.

我来回复

您尚未登录,请登录后再回复。点此登录或注册