薛申的方格本(grid)

1000ms 256MB 展开

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

薛申有一个 \(n×m\) 的方格本。

薛申把一个玻璃珠放到一个方格中,然后沿从 上、下、左、右、左上、左下、右上、右下 八个方向中选一个方向,弹一下玻璃珠,玻璃珠会无限地滚动。当玻璃珠滚动到方格本的边缘时,它可以反弹然后继续滚动。当它到达方格本的角上时,它可以原路返回。

薛申发现,玻璃珠会沿着一个固定的线路进行无限循环滚动。

薛申定义:两个线路不同,当且仅当两个线路包含的方格不完全相同(不考虑玻璃珠的具体移动方向)。

玻璃珠在不同的初始位置沿不同的初始方向进行滚动。

薛申想请你计算玻璃珠一共可能有多少种不同的滚动线路。

输入格式

两个整数 \(n,m\)。

输出格式

玻璃珠可能的滚动线路数。

数据范围

  • 对于 \(20\%\) 的测试点,满足 \(2≤n,m≤4\)
  • 对于 \(100\%\) 的测试点,满足 \(2≤n,m≤10^{18}\)
3 4
9
3 3
9