解题思路
- 兔子的按状态分类出生一个月的,出生两个月的,出生3个月和超过3个月的
- 出生刚一个月的萌新兔子数是上一轮的出生3个月的兔子数(n个他们能生出n个小萌新)
- 出生2个月的兔子数,和出生一个月的萌新兔子数是一样的
- 出生大于或等于3个月的兔子数就是之前的兔子数加上出生两个月的兔子数
- 最后将这个3中状态的兔子数相加就行了
package main import( "fmt" ) func main(){ var m int n,_ := fmt.Scan(&m);if n == 0{ return } // a,b,c a,b,c 分别代表出生1个月,出生2个月,出生3个月的兔子数量 a,b,c := 1,0,0 for i := 1;i < m; i++{ c += b b = a a = c } fmt.Println(a+b+c) }