[ 扩展欧拉定理 ] Balkan OI 2016 paper-towers
来源:互联网 发布:c语言数字变成字符串 编辑:程序博客网 时间:2024/05/17 08:49
题目大意:
求
根据拓展欧拉定理,可以将
时间复杂度
#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void Read(int& x){ char c=nc(); for(;c<'0'||c>'9';c=nc()); for(x=0;c>='0'&&c<='9';x=(x<<3)+(x<<1)+c-48,c=nc());}#define N 1000010struct Node{ int w; bool f; Node(int w=0,bool f=0):w(w),f(f){}};int i,j,k,n,m,tot,T,phi[N],p[N],a[N];bool f;bool b[N];inline void Init(){ phi[1]=1; for(int i=2;i<=m;i++){ if(!b[i]){ p[++tot]=i; phi[i]=i-1; } int t; for(int j=1;j<=tot&&(t=p[j]*i)<=m;j++){ if(!(i%(p[j]))){ b[t]=1;phi[t]=phi[i]*p[j]; break; } phi[t]=phi[i]*(p[j]-1);b[t]=1; } }}inline Node Pow(int x,int y,int p){ Node Ans;Ans.w=1; for(;y;){ if(1ll*Ans.w*x>=p)Ans.f=1; if(y&1)Ans.w=1ll*Ans.w*x%p; y>>=1; if(!y)break; if(1ll*x*x>=p)Ans.f=1; x=1ll*x*x%p; } return Ans;}inline int Gcd(int x,int y){ if(!y)return x; return Gcd(y,x%y);}inline Node Solve(int k,int m){ if(m==1)return Node(0,1); Node Ans; if(k==n){ Ans.w=a[n]%m; Ans.f=(a[n]>=m); return Ans; } Node t=Solve(k+1,phi[m]); if(Gcd(a[k],m)>1&&t.f)return Pow(a[k],phi[m]+t.w,m); return Pow(a[k],t.w,m);}int main(){ Read(T);Read(m); Init(); while(T--){ Read(n); for(i=1;i<=n;i++)Read(a[i]); printf("%d\n",Solve(1,m).w); } return 0;}
阅读全文
0 0
- [ 扩展欧拉定理 ] Balkan OI 2016 paper-towers
- 【扩展欧拉定理-降幂大法】Balkan OI 2016[数塔]题解
- [欧拉回路 dfs树] Balkan OI 2016 Acrobat
- [欧拉回路] 「Balkan OI 2016」Acrobat
- [欧拉回路] 「Balkan OI 2016」Acrobat
- 扩展欧拉定理
- 扩展欧拉定理
- [数论 拓展欧拉定理] HHHOJ #97【BalkanOI 2016】Power-towers
- [数论 拓展欧拉定理] BalkanOI 2016. Power-towers
- 欧拉定理、费马小定理和扩展欧拉定理
- 扩展欧拉定理证明
- [整理]扩展欧拉定理证明
- 欧拉定理 & 费马定理吗 & 欧几里得 & 扩展欧几里得
- 欧拉定理 & 费马定理吗 & 欧几里得 & 扩展欧几里得
- 扩展欧拉定理的证明 欧拉定理的推广
- [Z-Trening-718][BALKAN OI 2009]Reading
- UVa 10692 - Huge Mod (数论 + 欧拉定理扩展)
- [扩展欧拉定理] BZOJ 4869 [Shoi2017]相逢是问候
- 山东省立医院联手海信医疗,建立智能数字化手术室;建行与云从科技成立 Fintech 联合实验室| AI 掘金晚报
- 科技与孩童:那些蒙上阴影的社交应用
- 当我们看百度时,陆奇在看什么
- HttpRequest和HttpResponse对象
- web前端基础知识
- [ 扩展欧拉定理 ] Balkan OI 2016 paper-towers
- BigDL 0.2 版本即将发布,围绕开源英特尔都做了什么?
- 亚马逊的AI帝国,贝佐斯的星际迷航之旅
- 神州优车推出智慧交通开放平台 开放三大业务板块数据
- 王者荣耀官方首次授权比赛,和vivo一起开启全民竞技
- 一个摇滚歌手兼百度前员工眼里的百度
- 《网络安全法》实施,CSS专家将全面解读安全新秩序下的机遇与挑战
- [边双]hihocoder 1184——边的双连通分量
- 新轮融资进行之际 ofo小黄车宣布与软银C&S达成合作