#T1102. [2021第十二届蓝桥杯青少年组省赛] 求和比较

[2021第十二届蓝桥杯青少年组省赛] 求和比较

题目背景

第十二届蓝桥杯青少年组省赛2021年4月C++组第4题

题目描述

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

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

  1. 第一给出两个正整数 N 和 M;
  2. 第二从 1 到 N 组成一个连续正整数数组 AA={1,2,3,4N}A(A=\{1,2,3,4……N\})
  3. 第三将数组 A 拆分成两个子数组 A1、A2(1.两个子数组中不能出现相同的数;2.子数组中的数字可以是连续的也可以是不连续的;3.拆分出的两组子数组的元素个数可以不同,但总数量等于A数组元素个数);
  4. 第四对 A1、A2 两个子数组分别求和;
  5. 第五对 A1、A2 两个子数组的和做差(大的数字减去小的数字);
  6. 第六如果差值正好等于固定值M,则判定此拆分方案成立。

如:N = 5,M = 1,连续正整数数组 A = {1, 2, 3, 4, 5}。

符合条件的拆分方案有 3 种:

  • A1 = {1, 2, 4}, A2={3, 5}, 其中A1的和为7,A2的和为 8,和的差值等于 1
  • A1 = {1, 3, 4}, A2 = {2, 5}, 其中A1的和为8,A2的和为 7,和的差值等于 1
  • A1 = {3, 4}, A2 = {1, 2, 5}, 其中A1的和为7,A2的和为 8,和的差值等于 1

输入格式

输入两个正整数 NNM3<N<300<=M<=500M(3<N<30,0<=M<=500)

输出格式

输出拆分方案数。

样例 #1

样例输入 #1

5 1

样例输出 #1

3