解题思路
- 兔子的按状态分类出生一个月的,出生两个月的,出生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)
}


京公网安备 11010502036488号