题目链接:http://codeforces.com/problemset/problem/717/D
题目大意:
给定堆数和每堆石子的最大个数,
现在每堆都给定P(X),问其随机玩后
先手胜利的概率是多少。
题目分析:
明显的矩阵快速幂。
要注意的坑是我刚开始取上界直接取
k<<1了,这样其实有漏洞因为位运算的原因会越界,
正解应该是观察位的性质后取最小的二次幂,这里我们
取128即可。
#include<bits/stdc++.h>
using namespace std;
#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long
#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair&l