#Java 10, 44 bytes
Java 10, 44 bytes
f->b->{int r=1;for(;b>0;b-=f)r*=b;return r;} Takes the factorial as first input, base as second.
This above doesn't work for the largest test case due to the limited integer range (32-bits). To fix this we can use BigIntegers, which coincidentally is exactly double the size - 88 79 bytes:
f->b->{var r=f.ONE;for(;b.signum()>0;b=b.subtract(f))r=r.multiply(b);return r;} -9 bytes thanks to @OlivierGrégoire.
Explanation:
f->b->{ // Method with two integer parameters and integer return-type int r=1; // Result-integer, starting at 1 for(;b>0; // Loop as long as the base is still larger than 0 b-=f) // After every iteration: decrease the base by the factorial r*=b; // Multiply the result by the base return r;} // Return the result