Medium
You are given two positive integers n
and limit
.
Return the total number of ways to distribute n
candies among 3
children such that no child gets more than limit
candies.
Example 1:
Input: n = 5, limit = 2
Output: 3
Explanation: There are 3 ways to distribute 5 candies such that no child gets more than 2 candies: (1, 2, 2), (2, 1, 2) and (2, 2, 1).
Example 2:
Input: n = 3, limit = 3
Output: 10
Explanation: There are 10 ways to distribute 3 candies such that no child gets more than 3 candies: (0, 0, 3), (0, 1, 2), (0, 2, 1), (0, 3, 0), (1, 0, 2), (1, 1, 1), (1, 2, 0), (2, 0, 1), (2, 1, 0) and (3, 0, 0).
Constraints:
1 <= n <= 106
1 <= limit <= 106
public class Solution {
public long distributeCandies(long n, long k) {
if (n <= k) {
return (n + 1) * (n + 2) / 2;
}
if (n <= 2 * k) {
return (k + 1) * (k + 1)
- (n - k) * (n - k + 1) / 2
- (2 * k - n) * (2 * k - n + 1) / 2;
}
if (n <= 3 * k) {
return (3 * k - n + 1) * (3 * k - n + 2) / 2;
}
return 0;
}
}