UVa 10692 Huge Mods (指数循环节)
来源:互联网 发布:扩展欧几里得算法详解 编辑:程序博客网 时间:2024/06/07 06:20
UVa 10692 Huge Mods
题目大意:
给出模数
(注意指数运算的顺序:
(
题目分析:
主要是要运用到欧拉定理的推广——指数循环节.
AB mod C=AB mod φ(C)+φ(C) mod C
但是需要注意的是,指数运算自上而下的模数也会改变,如
abcd mod p
设
ax=ax mod φ(p)+φ(p) mod p
那么对于
按照顺序,递归求解即可.
代码:
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn=10+5;const int maxm=10000;int phi[maxm+1];void init(int n){ phi[1]=1; for(int i=2;i<=n;i++) if(!phi[i]) for(int j=i;j<=n;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); }}int pow_mod(int x,int y,int mod){ int ret=1; while(y>0) { if(y&1) ret=ret*x%mod; x=x*x%mod;y>>=1; } return ret;}int e[maxn],n;void dfs(int pos,int mod){ if(pos<n-2) dfs(pos+1,phi[mod]);//递归边界a^b e[pos]=pow_mod(e[pos],e[pos+1]%phi[mod]+phi[mod],mod);}int main(){ init(maxm); int mod,kase=0; while(scanf("%d",&mod)==1) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&e[i]); if(n>1) dfs(0,mod); else e[0]%=mod;//n=1时,特殊处理 printf("Case #%d: %d\n",++kase,e[0]); } return 0;}
0 0
- uva 10692 - Huge Mods 指数循环节
- UVa 10692 Huge Mods (指数循环节)
- UVa 10692 - Huge Mods(指数循环节)
- uva 10692 - Huge Mods(指数循环节)
- uva10692 - Huge Mods poj2164: Remainder Calculator 指数循环节
- Uva--10692--Huge Mods【数论】
- UVA 10692 - Huge Mods(数论)
- uva 10692 - Huge Mods(数论)
- uva 10692——Huge Mods
- UVA - 10692 Huge Mods (欧拉函数)
- 指数循环节 uva 10692
- UVa 10692 Huge Mods(快速幂)(欧拉定理)
- UVa10692,Huge Mod,数论,欧拉定理,指数循环节
- UVa10692 Huge Mods
- 指数循环节问题
- hdu4335 (指数循环节)
- 指数循环节
- 指数循环节
- 关系模型与多维模型差异示例(书摘备查)
- idea插件
- javascript学习之日期 字符串(18)—— 字符串 常用方法(中)
- 弱校软件构件与中间件技术试题(2016)
- ubuntu 终端快捷方式汇总
- UVa 10692 Huge Mods (指数循环节)
- Activity的四种启动模式和应用场景
- mysql分表+查询
- 自动补全插件jquery.autocomplete.js的使用
- <<时间管理与问题解决技巧>> 培训心得
- 彻底删除MYSQL
- ubuntu命令行模式与图形桌面切换方法
- tensorflow tutorials(九):卷积神经网络可视化
- MySQLdb:Python 操作 MySQL 数据库