/ WHOJ / 题库 /

[USACO2.2]集合 Subset Sums(改编) / 整数集合划分(文件IO)

[USACO2.2]集合 Subset Sums(改编) / 整数集合划分(文件IO)

题目描述

对于从 \(1\sim n\) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果 \(n=3\),对于 \(\{1,2,3\}\) 能划分成两个子集合,每个子集合的所有数字和是相等的:

\(\{3\}\) 和 \(\{1,2\}\) 是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)

如果 \(n=7\),有四种方法能划分集合 \(\{1,2,3,4,5,6,7 \}\),每一种分法的子集合各数字和是相等的:

\(\{1,6,7\}\) 和 \(\{2,3,4,5\}\)

\(\{2,5,7\}\) 和 \(\{1,3,4,6\}\)

\(\{3,4,7\}\) 和 \(\{1,2,5,6\}\)

\(\{1,2,4,7\}\) 和 \(\{3,5,6\}\)

当然,不是全部的 \(n\) 都能进行这样的划分,如 \(n=5\) 时,就无法进行划分。

给出 \(n\),你的程序应该输出划分方案总数。

格式

输入格式

第一行为正整数 \(t(≤10)\),表示数据组数;接下来 \(t\) 行,每行一个正整数 \(n(≤ 300)\)。

输出格式

对于每组数据,输出划分方案总数对 \(10007\) 的余数。

样例1

样例输入1

1
7

样例输出1

4

来源

地址:芜湖市二十七中电脑班刷题课
作者:汪老师
模拟赛\(T3\)

文件IO

freopen("subset.in","r",stdin);
freopen("subset.out","w",stdout);