这道题里面不用保存 inva[i] ,而且还卡常。事实证明快读快到飞起,

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const int MAXN=5000005; int a[MAXN];
ll pp[MAXN]; inline int qpow(ll x,int n,int p){
ll res=1;
while(n){
if(n&1){
res=res*x;
if(res>=p)
res%=p;
}
x=x*x;
if(x>=p)
x%=p;
n>>=1;
}
return res;
} inline int read(){
char c=getchar();
int x=0;
while(c<'0'||c>'9')
c=getchar();
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x;
} void solve(){
int n=read(),p=read(),k=read();
for(int i=1;i<=n;i++)
a[i]=read();
pp[0]=1;
for(int i=1;i<=n;i++){
pp[i]=pp[i-1]*a[i];
if(pp[i]>=p)
pp[i]%=p;
} int invk=qpow(k,p-2,p);
ll ans=0,ki=qpow(k,n,p);
ll invpp=qpow(pp[n],p-2,p); for(int i=n;i>=1;i--){
ll inva=invpp*pp[i-1];
if(inva>=p)
inva%=p; ans+=ki*inva;
if(ans>=p)
ans%=p; ki*=invk;
if(ki>=p)
ki%=p; invpp*=a[i];
if(invpp>=p)
invpp%=p;
} printf("%lld\n",ans);
return;
} int main() {
#ifdef Yinku
freopen("Yinku.in","r",stdin);
#endif // Yinku
solve();
return 0;
}

最新文章

  1. Maven安装
  2. TextInputLayout setError() setErrorEnable()
  3. Linux之CentOS 常用命令
  4. 手机屏幕滑动效果框架——flipsnap
  5. Docker系列(九)Kubernetes安装
  6. Class类文件的结构
  7. Oracle用户解锁的三种办法及默认的用户与密码
  8. C# ReferenceEquals(), static Equals(), instance Equals(), 和运算行符==之间的关系
  9. 静态化 - 伪静态技术(PHP正则表达式实现)
  10. NameError: name &#39;messagebox&#39; is not defined 错误处理
  11. python调用百度语音(语音识别-斗地主语音记牌器)
  12. [Swift]LeetCode754. 到达终点数字 | Reach a Number
  13. bootstrap modal 监听滚动条事件
  14. (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
  15. rocketmq 4.3.2 解决远程不能消费问题,解决未识别到公网IP问题
  16. 【BZOJ1188】分裂游戏(博弈论)
  17. Android CTS Test
  18. linux中断源码分析 - 软中断(四)
  19. codevs 1462 素数和
  20. dia无法输入中文?

热门文章

  1. C#读取自定义的config
  2. hive编程入门课程(加精)
  3. Oracle 一行拆分为多行
  4. 九度OJ 1096:日期差值 (日期计算)
  5. java之快速排序
  6. Perl 正则表达式语法
  7. 代码空间项目 -- alert窗口自定义
  8. Codeforces Round #383 (Div. 2) D. Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses —— DP(01背包)
  9. powershell 扩展 (PSCX) 安装指南
  10. JS错题整改