[蓝桥杯省赛 2021 中级组] 求和比较

[蓝桥杯省赛 2021 中级组] 求和比较

时间限制:1 S

内存限制:64 MB

【题目描述】

小蓝在学习 C++ 数组时,突发奇想想知道如果将一个连续的正整数数组拆分成两个子数组,然后对拆分出的两个子数组求和并做差,且差值正好等于一个固定的正整数,像这样同一连续的正整数数组拆分方案有多少种。

我们一起帮助小蓝设计一下规则:

  1. 给出两个正整数 \(N\) 和 \(M\) 。

  2. 从 \(1\) 到 \(N\) 组成一个连续正整数数组 \(A\) (\(A = \{1 , 2 , 3 , 4 , … , N\}\)) 。

  3. 将数组 \(A\) 拆分成两个子数组 \(A_1\) , \(A_2\)(1. 两个子数组中不能出现相同的数;2. 子数组中的数字可以是连续的也可以是不连续的;3. 拆分出的两个子数组的元素个数可以不同,但总量等于 \(A\) 数组元素的个数)。

  4. 对 \(A_1\) , \(A_2\) 两个子数组分别求和。

  5. 对 \(A_1\) , \(A_2\) 两个子数组的和做差(大的数字减去小的数字)。

  6. 如果差值正好等于固定值 \(M\) ,则判定此拆分方案成立。

【输入格式】

分别输入两个正整数 \(N\) (\(3 \lt N \lt 30\)) 和 \(M\) (\(0 \le M \le 500\)) ,两个正整数由一个空格隔开。

【输出格式】

输出一个正整数,表示 \(1\) 到 \(N\)(包含 \(1\) 和 \(N\))连续的正整数数组中有多少种方案,使得拆分的两个子数组部分和的差值等于 \(M\) 。

样例 1

【样例 1 输入】

5 1

【样例 1 输出】

3

【样例 1 解释】

\(N = 5\) , \(M = 1\) ,连续正整数数组 \(A = \{1 , 2 , 3 , 4 , 5\}\) 。符合条件的拆分方案有 \(3\) 种:

\(A_1 = \{1 , 2 , 4\}\) , \(A_2 = \{3 , 5\}\) ,其中 \(A_1\) 的和为 \(7\) ,\(A_2\) 的和为 \(8\) ,和的差值等于 \(1\) 。

\(A_1 = \{1 , 3 , 4\}\) , \(A_2 = \{2 , 5\}\) ,其中 \(A_1\) 的和为 \(8\) ,\(A_2\) 的和为 \(7\) ,和的差值等于 \(1\) 。

\(A_1 = \{3 , 4\}\) , \(A_2 = \{1 , 2 , 5\}\) ,其中 \(A_1\) 的和为 \(7\) ,\(A_2\) 的和为 \(8\) ,和的差值等于 \(1\) 。

信息

ID
1010
难度
3
分类
(无)
标签
递交数
39
已通过
3
通过率
8%
上传者