외계 미생물
면접 대비시간 제한2초메모리 제한256 MB
미생물 한 마리에서 시작해 H일 동안 나타날 수 있는 번식 패턴의 수를 센다. 각 날에 살아 있는 미생물이 낳는 자식 수의 합은 W 이하다.
문제
B와 C로 가득한 성적표를 보고 컴퓨터공학에는 재능이 없다고 판단한 윤영이는 전공을 바꿔 항공우주학과와 생물학과를 복수전공했고, 외계 생물 연구자로 크게 성공했다.
어느 행성에서 특이한 외계 미생물을 발견한 윤영이는 몇 마리를 연구소로 가져와 관찰했다. 연구 결과 이 미생물은 다음 성질이 있었다.
- 미생물은 혼자서 자식을 낳는다. 하루 동안 자식을 모두 낳고 그날 죽는다. 낳을 자식의 수는 미생물이 자유롭게 정한다. 자식은 낳은 순서로 구분하며, 태어난 다음 날부터 자기 자식을 낳는다.
- 미생물은 자식끼리 지나치게 경쟁하는 상황을 원하지 않는다. 그래서 그날 살아 있는 미생물이 낳은 자식 수의 총합이 이하가 되도록 서로 협력한다. 는 세대가 바뀌어도 변하지 않는다.
- 자식을 한 마리도 낳지 않는 미생물이 있어도 되지만, 종족을 유지해야 하므로 그날 살아 있는 미생물이 모두 자식을 낳지 않는 일은 일어나지 않는다. 자식을 낳지 않아도 태어난 다음 날 죽는 것은 똑같다.
윤영이는 번식하는 모습이 재미있어서 미생물 한 마리만 실험실 용기에 담아 두었다. 이 용기에서 지나친 경쟁 없이 허용되는 자식 수의 총합은 이고, 미생물은 곧 번식을 시작했다.
같은 날 살아 있는 미생물은 서로 구분한다. 하루의 번식 양상은 그날 살아 있는 미생물이 낳은 자식의 수를 미생물 순서대로 적은 수열이고, 일 동안의 번식 양상은 이런 수열 개를 날짜 순서대로 늘어놓은 것이다. 하루라도 수열이 다르면 서로 다른 양상으로 센다.
미생물 한 마리에서 시작해 일 동안 생길 수 있는 번식 양상의 수를 구하시오.
입력
첫째 줄에 와 가 공백으로 구분되어 주어진다. , 이다.
출력
일 동안 생길 수 있는 번식 양상의 수를 로 나눈 나머지를 첫째 줄에 출력한다. 경우의 수가 매우 커질 수 있으므로 계산 중간값이 32비트 정수의 범위를 넘을 수 있다. 64비트 정수를 쓰는 편이 안전하다.
힌트
, 이면 처음 미생물 한 마리가 자식을 1마리, 2마리, 3마리 낳는 세 가지 양상이 있다. 자식을 0마리 낳는 경우는 조건 3에 걸려 세지 않는다.
이면 번식이 한 번도 일어나지 않으므로 양상은 빈 것 하나뿐이고, 답은 1이다.