#L0507. 等和子集划分方案数

等和子集划分方案数

题目描述

对于从 11NN1N391 \le N \le 39)的连续整数集合,存在若干种方式将其划分为两个子集,使得两个子集的元素之和相等。

例如当 N=3N=3 时,集合 {1,2,3}\{1,2,3\} 可以按如下方式划分,使得两个子集的和相同:

  • {3}\{3\}{1,2}\{1,2\}

这算作一种划分方案。交换两个子集的顺序视为同一种方案,不重复计数。

N=7N=7 时,集合 {1,2,3,,7}\{1,2,3,\ldots,7\} 共有 44 种等和划分方案:

  • {1,6,7}\{1,6,7\}{2,3,4,5}\{2,3,4,5\}
  • {2,5,7}\{2,5,7\}{1,3,4,6}\{1,3,4,6\}
  • {3,4,7}\{3,4,7\}{1,2,5,6}\{1,2,5,6\}
  • {1,2,4,7}\{1,2,4,7\}{3,5,6}\{3,5,6\}

给定 NN,求集合 {1,2,,N}\{1,2,\ldots,N\} 的等和划分方案数。若不存在任何方案则输出 00

你的程序必须通过计算得到答案,不能查表。

输入格式

一行,一个正整数 NN

输出格式

一行,一个整数,表示等和划分的方案数。若无法划分则输出 00

样例

7
4

提示

提示

  • 总和 S=N(N+1)2S = \frac{N(N+1)}{2},若 SS 为奇数则答案为 00
  • 可用背包 DP 统计和为 S/2S/2 的子集个数,最终除以 22(因为每种划分被计算了两次)。
难度 普及
通过率
尝试 0
已通过 0
ID
1235
类型
传统题
Time Limit
1000ms
Memory Limit
125MiB
上传者