UVA
来源:互联网 发布:手机九宫格软件 编辑:程序博客网 时间:2024/06/03 21:46
题解
同学安利了一道拓展欧拉定理题。
代码
//拓展欧拉定理#include <cstdio>#include <algorithm>#define maxn 10005using namespace std;int N, M, prime[maxn], phi[maxn], mark[maxn], a[maxn];void shai(){ int i, j; phi[1]=1; for(i=2;i<maxn;i++) { if(!mark[i])prime[++*prime]=i, phi[i]=i-1; for(j=1;i*prime[j]<maxn;j++) { mark[i*prime[j]]=1; if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;} phi[i*prime[j]]=phi[i]*phi[prime[j]]; } }}int fastpow(int a, int b, int p){ int t=a, ans=1; for(;b;b>>=1,t=t*t%p)if(b&1)ans=ans*t%p; return ans;}int dfs(int pos, int p){ if(pos==N)return a[pos]%p; else return fastpow(a[pos],dfs(pos+1,phi[p])+phi[p],p);}int read(int x=0){ char c=getchar(); while(c<48 or c>57) { if(c=='#')return 0; c=getchar(); } while(c>=48 and c<=57)x=(x<<1)+(x<<3)+c-48, c=getchar(); return x;}int main(){ int cnt=0; shai(); while(M=read()) { N=read(); for(int i=1;i<=N;i++)a[i]=read(); printf("Case #%d: %d\n",++cnt,dfs(1,M)); } return 0;}
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 包含min函数的栈
- 数据结构——线性表——链式存储结构——C++实现线性表
- Linux C 文件操作相关整理
- 请求筛选模块被配置为拒绝包含双重转义序列的请求。---该问题的解决办法之一
- 帮 IT 人减压放松的 10 个良心网站
- UVA
- C# 学习笔记 4
- 1021. 个位数统计 (15) PAT
- FAR 和 FRR
- **Android 图片处理系列:图片压缩处理
- $.ajax()方法详解
- 前缀、中缀、后缀表达式
- PAT 1001. A+B Format (20)
- quartz 企业级