#include <stdio.h>
int num_count(int a, int b, int d, int n);
int main(void)
{
int a, b, d, n, num;
//a=성체가 되는 날 b=더이상 개체를 만들어내지 않는 날 d=죽는 날 n=날짜
scanf(" %d %d %d %d", &a, &b, &d, &n);
num=num_count(a, b, d, n);
printf("%d", num);
return 0;
}
int num_count(int a, int b, int d, int n)
{
int i, k, cnt=2, die[10001]={0}, adult;
die[1]=1; //첫째날 태어난 짚신벌레
die[a+1]=1; //a번째 날 태어난 짚신 벌레
k=a+2; //die배열 방번호
adult=1; //현재 성체 수
for(i=a+2; i<=(n+1); i++)
{
if(k>d)
k=1;
//짚신벌레 죽음
if(i>d)
{
cnt-=die[k];
die[k]=0;
}
//성체가 된 짚신 벌레
if(k>a)
{
adult+=die[k-a];
}
else
{
adult+=die[d-(a-k)];
}
//더이상 번식하지 않는 짚신벌레
if(k>b && i>=b)
{
adult-=die[k-b];
}
else if(k<=b && i>=b)
{
adult-=die[d-(b-k)];
}
die[k++]=adult; //새로 태어난 짚신 벌레
cnt+=adult; //짚신벌레 수 증가
}
return (cnt%1000);
}
2018.02.24 12:50
정올 - 알고리즘 - 짚신벌레(1822) - 미완
조회 수 259 추천 수 0 댓글 0