fork download
  1. #include <cstdio>
  2.  
  3. int a, b, d, N;
  4.  
  5. int Live[1000003];
  6. int Born[1000003];
  7. int Sum[1000003];
  8.  
  9. int main() {
  10. scanf("%d %d %d %d", &a, &b, &d, &N);
  11.  
  12. Born[0] = 1;
  13. Live[0] = 1;
  14. Sum[0] = 1;
  15.  
  16. for (int i = 1; i <= N; i ++) {
  17. if (i >= a) {
  18. Born[i] = Sum[i - a];
  19. }
  20. if (i >= b) {
  21. Born[i] -= Sum[i - b];
  22. }
  23.  
  24. Sum[i] = Sum[i - 1] + Born[i];
  25. Live[i] = Live[i - 1] + Born[i];
  26.  
  27. if (i >= d) {
  28. Live[i] -= Born[i - d];
  29. }
  30.  
  31. Live[i] = (Live[i] + 1000) % 1000;
  32. Born[i] = (Born[i] + 1000) % 1000;
  33. Sum[i] = (Sum[i] + 1000) % 1000;
  34. }
  35.  
  36. printf("%d\n", Live[N]);
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 15192KB
stdin
3 5 7 20000
stdout
609