#P1711. Puncher
Puncher
描述
打孔器是一种带有多根针的设备,用于在车票上打孔。在工厂里,有一个行列的矩形模板,如图所示(,),可以用它制作带有、、、根针的不同打孔器。针的行和列相互垂直,行与行之间的距离等于列与列之间的距离。显然,用这种方式可以制作出种不同的打孔器。
然而,有时无法区分由不同打孔器打出的车票。假设在打孔时,车票的两条相对边与针的行平行,另外两条相对边与针的列平行。打孔车票上的孔的数量总是等于相应打孔器上针的数量。允许进行以下变换的组合操作: 车票可以从任意一侧打孔(轴对称)。 车票可以以它的四条边中的任意一条朝下插入打孔器(旋转度、度和度)。 也允许进行平行移动。
你的任务是编写一个程序,来确定用一个的模板实际上可以制作出多少种不同的打孔器。如果使用上述任何组合操作都无法使两个打孔器打出的车票上的孔匹配,那么这两个打孔器就被认为是实际上不同的。
输入
输入文件包含两个正整数(不大于)和(不大于),它们之间用一个空格分隔。
输出
输出文件包含一个整数,表示实际上不同的打孔器的数量。
输入数据 1
3 3
输出数据 1
85
来源
1997 年欧洲东北部地区竞赛