#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) - 미완
조회 수 235 추천 수 0 댓글 0