网格游戏
题号:NC21340
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
Special Judge, 64bit IO Format: %lld

题目描述

有一个游戏平板上面有n×m个格子,一开始每个格子都是关闭的,每个格子里面都有一个标记
已知每种标记恰好出现两次,也就是一共有n*m/2种标记
规定一次移动为依次(one by one不是同时)打开一对格子查看里面的标记,如果标记不一样,格子会自动关闭,但是你的记忆是超强了,看过了就不会忘,如果标记是一样的,格子从此就一直保持打开状态,当所有格子都打开时游戏结束
请算出游戏结束的最少期望步数

输入描述:

输入一行包含两个整数 N, M (1 ≤ N ≤ 50, 1 ≤ M ≤ 50)
N*M是偶数

输出描述:

输出一个浮点数.误差不超过1e-9
示例1

输入

复制
1 2

输出

复制
1.0
示例2

输入

复制
2 2

输出

复制
2.6666666666666665
示例3

输入

复制
2 3

输出

复制
4.333333333333334
示例4

输入

复制
4 4

输出

复制
12.392984792984793

备注:

子任务1: n*m <= 100
子任务2: n*m <= 1000
子任务3: 无限制