Codeforces 696C. PLEASE(快速幂+费马小定理)
题目链接
题目大意
三个杯子,硬币一开始在中间的杯子里,每次操作可能是左边和中间或右边和中间交换,问n次操作后,硬币在中间的概率
思路
设 f(n) f(n) 是n次操作后硬币在中间的概率,则很明显, f(n)=1−f(n−1)2 f(n) = \frac{1-f(n-1)}{2}
展开化简得到可以得到 anbn \frac{a_n}{b_n} 的形式 易得 bn=2n−1 b_n = 2^{n-1}
\ a_n=\begin{cases} \frac{2^{n-1}+1}{3}& \text{n为偶数},\\\\\frac{2^{n-1}-1}{3} & \text{n为奇数}\\ \end{cases}
显然 2n−1+1 2^{n-1} + 1 和 2n−1 2^{n-1} 互质,所以不用约分了,幂的操作可以用快速幂来处理,再用费马小定理转除为乘,这题就搞定了
PS:代码给了CPP和Python两个版本的。
PS2:原生的Python比较慢,PyPy快一点,CF上交PyPy就可以过,python大法好,自己处理大数,pow自带取模~~
代码
CPP
#include <cstdio>
#include <iostream>
using namespace std;
const int maxn = 1e5+10;
const int mod = 1e9+7;
typedef long long ll;
ll num;
ll Qpow(ll a,ll b){ll res = 1;while(b){if(b&1) res = res * a %mod;a = a * a % mod;b >>= 1;}return res;
}int main (){int n;cin >>n;ll b = 2;ll flag = -1;for(int i = 0 ; i < n ; i ++){scanf("%I64d",&num);b = Qpow(b,num);if(num %2 == 0) flag = 1;}b = b*Qpow(2LL,mod-2)%mod; // b = 2^n-1ll a = (b+flag+mod)%mod*Qpow(3LL,mod-2)%mod; //a = (2^n-1 -/+ 1) / 3printf("%I64d/%I64d",a,b);return 0;
}
Python
from functools import reduce
mod = 1000000007
n = input()
num = list(map(int,input().split()))
flag = 1 if len(list(filter(lambda x: x%2 == 0,num))) else -1
b = reduce(lambda x,y:pow(x,y,mod),num,2)
b = b*pow(2,mod-2,mod)%mod # b = 2^n-1
a = (b+flag)*pow(3,mod-2,mod)%mod #a = (2^n-1 -/+ 1) / 3
print("%d/%d"%(a,b))
Codeforces 696C. PLEASE(快速幂+费马小定理)相关推荐
- HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)
题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...
- 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~
题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...
- HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)
ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...
- 51nod 1013快速幂 + 费马小定理
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n ...
- 1916. 统计为蚁群构筑房间的不同顺序 费马小定理+快速幂+DFS
1916. 统计为蚁群构筑房间的不同顺序 你是一只蚂蚁,负责为蚁群构筑 n 间编号从 0 到 n-1 的新房间.给你一个 下标从 0 开始 且长度为 n 的整数数组 prevRoom 作为扩建计划.其 ...
- 牛客小白月赛28 A牛牛和牛可乐的赌约 (数论-费马小定理)
题目 A牛牛和牛可乐的赌约 题目链接 传送门 题解 注意阅读题目是计算牛牛输的概率. 需要掌握的知识点 快速幂 费马小定理 分数取模 首先我们容易知道 牛牛 赢的概率是 1 n m \frac{1}{ ...
- 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
最新文章
- 查看Hive SQL执行日志
- oracle游标循环定义变量赋值,PL/SQL 循环 数组 游标的使用
- 我凭什么拿到了阿里、腾讯、今日头条3家大厂offer?通用流行框架大全
- C#.NET验证码智能识别学习笔记---03#.Net中@符号的意思
- 第一次大作业总结——四则运算程序
- android 识别车牌颜色,Android、ios移动端车牌识别sdk / 车牌识别API
- 基于php+mysql的企业人事管理系统
- iOS AppStore 转让APP
- 【WA】TBC功能WA串更新日志(更新至2022.06.02)
- vue使用markdown
- ipv4地址怎么设置 手机_手机ip地址怎么设置 手机WIFI静态IP设置方法
- 赞!WEB设计之路!网络视觉艺术发展史概览
- 一款app 开发在线工具:app inventor
- 视频:忆童年有摇杆,《暗黑破坏神3》街机版演示
- 如何防止SP利用欠费进行套利
- 中国古代经典励志名言100句,百读不厌,陪孩子一起读经典!
- 常用的web服务器软件整理
- Unity3d学习笔记 var 关键字
- processing制作熊猫头像跟随鼠标拖尾
- 浅谈C语言嵌入式系统编程注意事项
热门文章
- 阅读“细粒度图像识别关键技术研究”
- linux 修改ip权限,Linux下修改IP地址
- 部分面向对象习题,留给学生做不错!!!
- 计算机应用基础图文混合排版,图文表混合排版 说课稿
- 深度学习算法评价标准AP bbox bev 3d
- Visual C# 中XML注释的使用(含注释在开发时显示换行)
- openpyxl模块安装及使用
- 辣鸡HellPix刷yyb网络流题单(orz yyb)
- 能够熟练使用计算机 手机,下列加点成语使用正确的一项是()A.在这时候,众人也都豁然开朗地笑起来,教室内外充满了快活的空气。B.他操作计算机非常熟练,已经达到了为所欲为的程度。C.华为手机做工精...
- Vscode Backspace删除失效