关灯
题号:NC214463
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

您手中有n盏灯,其中有k盏灯是亮的,您的目的是将所有灯都熄灭。

但是您只有一种操作方式:

等概率地选择一盏灯反转它的状态(如果原来是亮的,那它熄灭,如果原来是熄灭的,那它被点亮)这被视为一次操作。

请问达成目的的期望操作次数。

输入描述:

两个正整数n,k表示所有灯的盏数和现在亮着的盏数,

答案可能很大(对1000000007取模)

输出描述:

输出一个整数代表答案
示例1

输入

复制
3 1

输出

复制
7
示例2

输入

复制
3 2

输出

复制
9
示例3

输入

复制
4 4

输出

复制
333333357

说明

分数形式是\frac{64}{3}

备注:

分数对取模的含义是对于一个的不可约分数,存在q使得 mod 即对取模的结果。