#HK4806. 「RMI 2024」Octagon

「RMI 2024」Octagon

题目描述

题目译自 Romanian Master of Informatics 2024 Day1 T2 「Octagon

一个优雅八边形是一个凸多边形,面积不为零,且边数不超过 88。它的每条边要么与坐标轴平行,要么与坐标轴成 4545^\circ 角。所有与坐标轴平行的边长度必须是整数,而其他边的长度必须是 2\sqrt{2} 的整数倍。下面展示了几个优雅八边形的样例:

img1.png

假设你沿着一个优雅八边形的边按逆时针顺序行走,会发现它由长度为 112\sqrt{2} 的线段组成,这些线段连接行走路径上连续的网格点。因此,这些线段可以根据方向分为 88 类:北、东北、东、东南、南、西南、西和西北。

现在,假设你知道了每类线段最多能使用的数量,你能构造出多少个不同的优雅八边形呢?

输入格式

输入只有一行,包含 88 个空格分隔的整数,分别表示北、东北、东、东南、南、西南、西、西北方向上最多可用的线段数量。

输出格式

输出一个整数,表示能构造出的优雅八边形总数,对 109+710^9 + 7 取模。

1 0 1 0 1 0 1 0

1

在第一个样例中,唯一可能的优雅八边形是一个 1×11 \times 1 的正方形。

1 1 1 1 1 1 1 1

19

在第二个样例中,总共有 1919 个不同的优雅八边形。

2 2 2 2 2 2 2 2

228

1 2 3 4 4 3 2 1

135

100 100 100 100 100 100 100 100

636061137

数据范围与提示

对于所有输入数据,满足:

  • NN 表示输入中 88 个值的最大值。
  • N1 000 000 000N \leq 1 \ 000 \ 000 \ 000
  • 如果一个优雅八边形可以通过平移(但不旋转)变成另一个,则认为它们相同。换句话说,两个优雅八边形相同,当且仅当它们在 88 个方向上使用的线段数量完全一致。

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 99 没有对角线段可用
22 1717 N100N \leq 100
33 2929 N2 000N \leq 2 \ 000
44 2929 N200 000N \leq 200 \ 000
55 1616 无附加限制