CF697E && CF696C PLEASE
题意:给你三个杯子,一开始钥匙放在中间的杯子里,然后每一回合等概率将左右两个杯子中的一个与中间杯子交换。求n回合之后钥匙在中间杯子的概率。这里要求概率以分数形式输出,先化成最简,然后对1e9 + 7取模。
题解:首先我们可以轻易得到一个递推式:$ d[i] = \frac{{1 - d[i - 1]}}{2} $
但递推式是不行的,我们要得到一个封闭形式。
运用数列技巧,我们可以进行如下变换:$d[i] - \frac{1}{3} = - \frac{1}{2}(d[i - 1] - \frac{1}{3})$
那么我们有 $d[n] = \frac{{{{( - 1)}^n} + {2^{n - 1}}}}{{3 \times {2^{n - 1}}}}$
其中我们发现,${{{( - 1)}^n} + {2^{n - 1}}}$ 一定是3的倍数,且商一定是奇数,所以与剩下部分互质
也即 $p = \frac{{{{( - 1)}^n} + {2^{n - 1}}}}{3}$ $q = {2^{n - 1}}$
带进去算就好了。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define mod 1000000007 inline LL read() {
LL x = , f = ; char a = getchar();
while(a < '' || a > '') { if(a == '-') f = -; a = getchar(); }
while(a >= '' && a <= '') x = x * + a - '', a = getchar();
return x * f;
} int n, p = , q, f = ; inline int fpow(int x, LL k) {
int ret = ;
while(k) {
if(k & ) ret = 1LL * ret * x % mod;
k /= ; x = 1LL * x * x % mod;
}
return ret;
} int main() {
n = read();
LL tmp; int inv2 = fpow(, mod -), inv3 = fpow(, mod - );
for(int i = ; i <= n; i++) {
tmp = read();
f = 1LL * f * tmp % ;
p = fpow(p, tmp);
}
q = 1LL * p * inv2 % mod;
p = 1LL * (q + (f ? - : )) * inv3 % mod;
printf("%d/%d\n" ,p ,q);
return ;
}
CF697E && CF696C PLEASE的更多相关文章
- CF696C PLEASE
矩阵快速幂+扩展欧拉定理 对于一个矩阵\(A\),我们有\(A^n \equiv A^{n\% \phi(m)+\phi(m)}(\%m)\) 经过简单的列举或推导可得 设目前进行了\(x\)轮,\( ...
随机推荐
- keycode 大全,javascript 再也不用操心我不知道的keycode了
keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter ...
- SQL创建表脚本
<1>SQL Server设置主键自增长列 SQL Server设置主键自增长列 1.新建一数据表,里面有字段id,将id设为为主键 www.2cto.com create t ...
- Django分发控制器urls--白话聊Django系列
开始前,先上一张图,让理解Django内部的处理流程,从图中我们可以知道Django内部使用MTV架构,那今天讲的第一个部分就是控制器,在Tornado框架中叫做路由系统,负责把url映射到相应的处理 ...
- ThinkPHP官网瀑布流实现分享
很多人都想做瀑布流的效果,这里告诉大家官网使用的方法. 首先要下载瀑布流的插件jquery.masonry.min.js 地址:http://masonry.desandro.com/index.ht ...
- python下多线程的限制以及多进程中传递参数的方式
python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是 ...
- Js算两经纬度间球面距离
function GetDistance( lat1, lng1, lat2, lng2){ var radLat1 = lat1 * Math.PI / 180.0 var radLat2 = la ...
- Linux用户相关文件之组文件
组信息文件: 1.文件地址: /etc/group -rw-r--r--. 1 root root 492 10月 6 21:56 /etc/group 2.文件内容: xiaol:x:500: 3. ...
- 根据URL请求 返回XML字符串
public static string GetHttpResponse(string url) { string content = ""; // Create a new Ht ...
- 3.1 使用STC89C52控制MC20拨打电话
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- django admin基础
通过onetoonefiled扩展得到的不会在添加user是自动添加原因是onetoonefiled只是一个model 可以they are just Django models that happe ...