首页 > 其他分享 >「解题报告」P5431 乘法逆元 2

「解题报告」P5431 乘法逆元 2

时间:2023-08-20 15:23:15浏览次数:39  
标签:ch int res 逆元 read P5431 解题 乘法

题目链接:【模板】乘法逆元 2

这道题不建议叫乘法逆元,可以直接当一道数学题去处理,我们观察这个式子 \(\sum\limits_{i=1}^n \frac{k^i}{a_i}\),那么我们直接通分就和即可,分子就是 \(\sum\limits_{i=1}^nk^i\cdot (a_1\sim a_i-1\cdot a_i+1\sim a_n)\),预处理出前缀积和后缀积即可,最后乘上 \(1\sim n\) 阶乘的逆元即可。

这道题卡时间,用快读快写可以过。

点击查看代码
#define M 5000010
using namespace std;
int n, p, k, ans, base = 1;
int f[M], g[M], inv[M], a[M];
inline int read() {
	int f(1) , x(0);
	char ch = getchar();
	for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
	for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
	return f * x;
}
inline void write(int x) {
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
}
int QuickPow(int a, int b) {
	int res = 1;
	while (b) {
		if (b & 1) res = res * a % p;
		a = a * a % p;
		b >>= 1;
	}
	return res;
}
int main() {
	n = read(), p = read(), k = read();
	for (int i = 1; i <= n; i++)
		a[i] = read();
	g[0] = f[n+1] = 1;
	for (int i = 1; i <= n; i++)
		g[i] = g[i-1] * a[i] % p;
	for (int i = n; i >= 1; i--)
		f[i] = f[i+1] * a[i] % p;
	for (int i = 1; i <= n; i++) {
		base = base * k % p;
		ans = (ans + base * g[i-1] % p * f[i+1] % p) % p;
	}
	int w = QuickPow(g[n], p - 2);
	write((ans * w) % p);
	return 0;
}

标签:ch,int,res,逆元,read,P5431,解题,乘法
From: https://www.cnblogs.com/Aewrxuk/p/17644027.html

相关文章

  • 「解题报告」P1972 HH的项链
    题目链接:HH的项链这道题做法很多,看到有用线段树,主席树和莫队做的,但我不太会用树状数组,所以讲解一下树状数组的解法。题干告诉我们要求区间内的贝壳的种类数,那么用树状数组怎么维护呢?我们通过一个简单的例子来理解一下。对于一个序列:143242,我们要去求这个序列里的贝壳的个数......
  • Atcoder Beginner Contest 315 解题报告
    AtcoderBeginnerContest315ContestlinkHintsD尝试优化暴力。A-tcdr没啥好说的,模拟。代码实现voidSolve(){ while(charch=getchar()) { if(!isalpha(ch))return; if(ch!='a'&&ch!='e'&&ch!='i'&&ch!='o......
  • 算法学习笔记-逆元
    前言:还记得小学学的倒数吗?倒数的定义大概是若\(ax=1\),则称\(x\)为\(a\)的倒数。而逆元,其实可以看做在模意义下的倒数。也就是\(ax\equiv1\pmodp\),且\(a\)与\(p\)互质,则称\(x\)为\(a\)在模\(p\)意义下的乘法逆元,记作\(a^{-1}\)。本文就将简要介绍求逆元的......
  • 【数学】高中数学必考立体几何知识点汇总,附8大解题技巧!
    立体几何必考知识汇总一空间几何体结构1.空间结合体:如果我们只考虑物体占用空间部分的形状和大小,而不考虑其它因素,那么由这些物体抽象出来的空间图形,就叫做空间几何体。2.棱柱的结构特征:有两个面互相平行,其余各面都是四边形,每相邻两个四边形的公共边互相平行,由这些面围成的图形叫做......
  • 乘法逆元
    定义若在\(\modp\)意义下,对于一个整数\(a\),有\(a*x\equiv1(\modp)\),那么这个整数\(x\)即为\(a\)的乘法逆元,同时\(a\)也为\(x\)的乘法逆元。充要条件\(a\)存在模\(p\)的乘法逆元的充要条件是\(\gcd(a,p)=1\),即\(a\botp\)。应用\(x\getsb\)的逆元\(a......
  • 乘法逆元及其三种求法
    什么是逆元?如果\(ax\equiv1(\modp)\),且\(a\)与\(p\)互质\(\gcd(a,p)=1\),则\(x\)是\(a\)在模\(p\)意义上的逆元,也就是\(a\equivx^{-1}(\modp)\)。\(\mathcal{first}\).费马小定理求逆元我们知道费马小定理是:\(a^{p-1}\equiv1(\modp)\)。两边同时乘上\(a^{......
  • 「P4313」文理分科 解题报告
    「P4313」文理分科题目描述文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过)小P所在的班级要进行文理分科。他的班级可以用一个\(n\timesm\)的矩阵进行描述,每个格子代表一个同学的座位。每位同学必须从文科和理科中选择一科。同学们在选择科目的时候会获......
  • 「USACO2007JAN」Balanced Lineup 解题报告
    「USACO2007JAN」BalancedLineup传送门挖个坑。。。#include<bits/stdc++.h>usingnamespacestd;intn,q,l,r,f1[50002][30],f2[50002][30],a[50002];voidprework(){for(inti=1;i<=n;i++){f2[i][0]=a[i];f1[i][0]=a[i];}intk=log(n......
  • 扩展欧几里得算法与乘法逆元
    Part1:前置知识欧几里得算法\[\foralla,b\in\mathbb{N},\gcd(a,b)=\gcd(b,a\bmodb)\]\(\mathrm{Bézout}\)定理对于任意整数\(a,b\),存在一对整数\(x,y\),满足\(ax+by=\gcd(a,b)\)证明:在欧几里得算法的最后一步,即\(b=0\)时,显然有一对整数\(x=1,y=0\),使得\(a......
  • 「解题报告」AtCoder Beginner Contest 313
    比赛地址:AtCoderBeginnerContest313-AtCoder后记:请正确理解题意后再做题!!!A-ToBeSaikyoA-ToBeSaikyo(atcoder.jp)每个人有一个数值,问第一个人要加多少才能使得自己的数值变成最大的。就这么个破题我还WA了一发//Thecodewaswrittenbyyifan,andyifanis......