方程的解[2]
测试数据来自 system/3055
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【问题描述】
给定方程:\(x_1+x_2+...+x_n=m\),其中:\(x_1,x_2,…,x_n\) 为整数,\(m\) 为正整数。
再给定关于 \(x_i\) 的约束条件,即要求:\(0 \le x_i \le a_i\)。
请你编程计算在满足约束条件的情况下,方程的解的个数。
【输入格式】
第一行包含两个整数:\(m,n\)。它们的意义如题目描述。
接下来有 \(n\) 行,每行包含一个整数:\(a_i\),表示 \(0 \le x_i \le a_i\)。
【输出格式】
若存在满足条件的解,则输出方程不同的解的个数 \(mod\ 10^9+7\) 的结果。若没有解,则输出 None。
【输入输出样例1】
Input
8 3
3
2
4
Output
3
【样例1解释】
有3组满足约束条件的解,分别为:
\(x_1=2,x_2=2,x_3=4\);即:2 + 2 + 4 = 8
\(x_1=3,x_2=1,x_3=4\);即:3 + 1 + 4 = 8
\(x_1=3,x_2=2,x_3=3\);即:3 + 2 + 3 = 8
【输入输出样例2】
Input
10 4
3
2
1
3
Output
None
【数据说明】
对于 \(40\%\) 的数据 \(1≤n≤50\),\(0≤m≤1000\)。
对于 \(100\%\) 的数据 \(1≤n≤100\),\(0≤m≤10000\),\(0≤a_i≤m\)。
【来源】
Mr.he