首先这种概率转移的题可以用矩阵来做 但这题要求用分数表示 而且是x/y % mod 的形式 所以我们要一直用分数来表示中间过程值 (两个分数相乘或相加提前取模都不会影响最后的值)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#define scnaf scanf
#define cahr char
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
const int mod=1000000007;
const int maxn=1e5+5;
const int inf=1e9;
const double eps=1e-8;
const int Mn = 101;
const int Mm = 101;
struct frac
{
long long num,den;
frac(long long num=0,long long den=1){
this->num=num%mod;
this->den=den%mod;
}
frac operator +(const frac &o) const{
return frac(num*o.den+den*o.num,den*o.den);
}
frac operator -(const frac &o) const{
return frac(n