[题解]P5431 【模板】模意义下的乘法逆元 2
可恶,卡常好难受。
将分数通分,第\(i\)个分数是\(\frac{k^i*fac\div a[i]}{fac}\),\(fac\)表示所有元素的积。
我们可以用\(lr,rl\)记录\(a\)的前缀后缀积,第\(i\)个分数就是\(\frac{k^i*lr[i-1]*rl[i+1]}{lr[n]}\)。这样分母都是\(lr[n]\),分子就是上面一串的和。
然后用一遍逆元求出答案即可,这里用费马小定理。
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,p,k,a[5000010];
int lr[5000010],rl[5000010];
int read(){
int x=0,w=1;
char ch=0;
while(ch<'0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+(ch-'0');
ch=getchar();
}
return x*w;
}
int qp(int a,int b){
int ans=1;
while(b){
if(b&1) ans=(ans*a)%p;
a=a*a%p;
b>>=1;
}
return ans;
}
signed main(){
n=read(),p=read(),k=read();
lr[0]=1,rl[n+1]=1;
for(int i=1;i<=n;i++) a[i]=read();
for(int i=1;i<=n;i++) lr[i]=lr[i-1]*a[i]%p;
for(int i=n;i>=1;i--) rl[i]=rl[i+1]*a[i]%p;
int frac1=0,frac2=lr[n],t=k;
for(int i=1;i<=n;i++){
frac1=(frac1+lr[i-1]*rl[i+1]%p*t%p)%p;
t=(t*k)%p;
}
cout<<frac1*qp(frac2,p-2)%p;
return 0;
}
[题解]P5431 【模板】模意义下的乘法逆元 2的更多相关文章
- 模意义下的FFT算法
//写在前面 单就FFT算法来说的话,下面只给出个人认为比较重要的推导,详细的介绍可参考 FFT算法学习笔记 令v[n]是长度为2N的实序列,V[k]表示该实序列的2N点DFT.定义两个长度为N的实序 ...
- hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】
题目链接 首先利用组合数学知识,枚举两人的总胜场数容易得到 这还不是卷积的形式,直接搞的话复杂度大概是O(n^2)的,肯定会TLE.但似乎和卷积有点像?想半天没想出来..多谢Q巨提醒,才知道可以用下面 ...
- Newcoder Wannafly13 B Jxy军训(费马小定理、分数在模意义下的值)
链接:https://www.nowcoder.com/acm/contest/80/B 题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不 ...
- 高斯消元求主元——模意义下的消元cf1155E
#include <bits/stdc++.h> , MO = ; ; inline int qpow(int a, int b) { ; while(b) { ) { ans = 1ll ...
- P3811 乘法逆元
传送 乘法逆元:ax ≡ 1 (mod p),其中x为a的逆元,求模意义下的乘法逆元,通常有一下几种方法: 1.拓展欧几里得(也就是exgcd) ax ≡ 1 (mod p) ax-py=1 这就变成 ...
- 逆元-P3811 【模板】乘法逆元-洛谷luogu
https://www.cnblogs.com/zjp-shadow/p/7773566.html -------------------------------------------------- ...
- 模板【洛谷P3811】 【模板】乘法逆元
P3811 [模板]乘法逆元 给定n,p求1~n中所有整数在模p意义下的乘法逆元. T两个点的费马小定理求法: code: #include <iostream> #include < ...
- luogu P3811 【模板】乘法逆元
题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下的逆元. 输入输出样例 输入样 ...
- 洛谷 P3811 【模板】乘法逆元
P3811 [模板]乘法逆元 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下 ...
- 洛谷—— P3811 【模板】乘法逆元
https://www.luogu.org/problem/show?pid=3811 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式 ...
随机推荐
- Ubuntu 通过 ssh 下载、上传文件
下载文件 scp root@xxx.xxx.xxx.xxx:/root/file.txt /home 输入密码 上传文件 scp /home/file.txt root@xxx.xxx.xxx.xxx ...
- CF contest 1909 Pinely Round 3 (Div. 1 + Div. 2) 题解(Vanilla的掉分赛)
CF contest 1909 Pinely Round 3 (Div. 1 + Div. 2) Vanilla的掉分赛 绪言 Pinely Round 3 (Div. 1 + Div. 2) - C ...
- Java IO<4>Java io与装饰器模式
Java io与装饰器模式 装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包 ...
- SRv6 验证实验
本文分享自天翼云开发者社区<SRv6 验证实验>,作者:f****n 引言 Segment Routing over IPv6 (SRv6) 是一种基于 IPv6 的新兴网络架构,其通过在 ...
- LeetCode 914卡盘分组
看了官方题解如下: class Solution { public boolean hasGroupsSizeX(int[] deck) { int N = deck.length; int[] co ...
- UI上将BP附件放到BP结果中
1,取附件内容放到新增的字段里 METHOD get_attachment. DATA: current TYPE REF TO if_bol_bo_property_access. DATA: dr ...
- 提高数据的安全性和可控性,数栈基于 Ranger 实现的 Spark SQL 权限控制实践之路
在企业级应用中,数据的安全性和隐私保护是极其重要的.Spark 作为数栈底层计算引擎之一,必须确保数据只能被授权的人员访问,避免出现数据泄露和滥用的情况.为了实现Spark SQL 对数据的精细化管理 ...
- 好多分钟了解下java虚拟机--03
垃圾回收 引用计数法和可达性分析 引用计数法 即记录对象的 reference count 若≠0则保留 a, b对象相互引用, 不可回收, 造成内存泄露 可达性分析(JVM主流使用) 从GC Roo ...
- 英文单词字母大小写在线转换工具html代码
这是一个简单而实用的在线大小写转换工具.它允许用户输入任意文本,并提供三种转换选项:转换为全大写.全小写或首字母大写. 使用这个工具非常简单快捷.用户只需要在输入框中输入想要转换的文本,选择合适的转换 ...
- C++ set/multiset容器 学习总结
-------------------------------------set/multiset容器 set/multiset特性 set/multiset的特性是所有元素会根据元素的值自动进行排序 ...