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\)轮,\( ...
随机推荐
- 性能百万/s:腾讯轻量级全局流控方案详解【转自Wetest】
阿里用的方案是在nginx中配置限流(限流功能模块是自己开发的),流量统计线上是有监控打通的,具体的限流值是通过线上流量表现+线下性能测试(模拟线上场景)测试得出的. 全新的全局流控实现方案,既解决了 ...
- Android自定义Button字体颜色和背景颜色
http://blog.csdn.net/breeze666/article/details/7747649
- js 时间戳转换为指定的日期格式
function formatDate(date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFul ...
- RedHat6/Centos6.5安装mongodb
1 设置mongodb目录 [root@localhost /]# cd home/ [root@localhost home]# mkdir mongodb/db 2 配置yum [root@loc ...
- undefined let 作用域
const o = {uid:123,pid:'wwww'}const wxPayNotifyUrlBizInfo = (o) => { // TODO json let s = '' for ...
- springboot集成liquibase,h2数据库
Liquibase是一个用于跟踪.管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制. Liquibase具备如下特性:* 不依赖于特 ...
- 我的Android进阶之旅------>Android使用9Patch图片作为不失真背景
做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也是如此,代码要扩展,界面也要考虑自适应. 这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1 ...
- boost之操作系统相关
1.保存I/O流 下面这段代码cout会失效,原因是cout重定向之后失效. #include <iostream> #include <fstream> using name ...
- ACM解题之快速输出杨辉三角形(前68行)
题意: 本题要求计算并输出杨辉三角形的前 68 行. Time Limit:1000MS Memory Limit:65536K 解题: 为了能在规定时间准确输出杨辉三角形的前68行,这里我用了精准的 ...
- Python 2 一些实用模块的使用
time模块,sys模块,os模块,random模块, shutil模块, json & pickle 模块,re模块 time模块: 在Python中,通常有这几种方式来表示时间:1)时间戳 ...