/ Vijos / 题库 /

方程的解[2]

方程的解[2]

时间限制: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

信息

ID
3055
难度
9
分类
组合数学 | 其他 | 数学递推 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
被复制
1
上传者