ulong f2(int k, int n) { auto nums = new ulong[k + 1]; nums[$ - 1] = 1; int iter = k; ulong total = 0; foreach(i;k..n + 1) { int iter_next = iter + 1 > k? 0 : iter + 1; total += nums[iter] - nums[iter_next]; nums[iter_next] = total % 10^^8; iter = iter_next; }
return nums[iter]; }