------
## 最终结论
```python
def soupServings(N: int) -> float:
    if N > 5000:
        return 1.0  # For large N, the probability approaches 1

    memo = {}

    def dp(a, b):
        if a <= 0 and b <= 0:
            return 0.5
        if a <= 0:
            return 1.0
        if b <= 0:
            return 0.0
        if (a, b) in memo:
            return memo[(a, b)]

        prob = (dp(a - 100, b) +
                 dp(a - 75, b - 25) +
                 dp(a - 50, b - 50) +
                 dp(a - 25, b - 75)) / 4.0

        memo[(a, b)] = prob
        return prob

    return dp(N, N)

# Example usage:
N = 50
print(soupServings(N))
```