Problem E. Exponial---Urozero Autumn Training Camp 2016-Day 1||指数降幂公式
来源:互联网 发布:淘宝详情关联模板 编辑:程序博客网 时间:2024/05/21 07:06
题目描述:
贴一个官方题解:
题目思路,用指数降幂公式做,注意开long long。
代码参考@W4k3Up @徐航
感谢@qq_36704031 指正,之前的代码的确有问题,非常感谢这位兄弟能指出我的错误。
AC代码:(已改正)
/*Urozero Autumn Training Camp 2016Day 1: NCPC-2016, Friday, November 25, 2016Problem E. Exponial2017年9月3日14:21:272017年10月5日13点18分 更正AC指数降幂公式*/#include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>using namespace std;typedef long long ll;ll n,m,ans;ll euler(ll n){ //返回euler(n) ll res=n,a=n; for(ll i=2;i*i<=a;i++){ if(a%i==0){ res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出 while(a%i==0) a/=i; } } if(a>1) res=res/a*(a-1); return res;}ll fast_mod(ll x,ll n,ll Max){ ll res=1; while(n>0) { if(n & 1) res=(res*x)%Max; x=(x*x)%Max; n >>= 1; } return res;}ll func(ll n,ll m){if(m==1) return 0; if(n==1) return 1; else if(n==2) return 2%m; else if(n==3) return 9%m; else if(n==4) return fast_mod(4,9,m);/*if(n<=4){ll ans=1;for(int i=1;i<=n;i++){ans=fast_mod(i,ans,m);}return ans;}*/else{ll phi=euler(m);ll z=func(n-1,phi);ans=fast_mod(n,phi+z,m);}return ans;}void solve(){scanf("%lld%lld",&n,&m);printf("%lld\n",func(n,m));}int main(){solve();return 0;}
阅读全文
0 0
- Problem E. Exponial---Urozero Autumn Training Camp 2016-Day 1||指数降幂公式
- Problem G. Game Rank---Urozero Autumn Training Camp 2016-Day 1||简单模拟
- Problem J. Jumbled Compass---Urozero Autumn Training Camp 2016-Day 1||签到&模拟时针转动
- KTU Programming Camp (Winter Training Day 1)
- Restore——KTU Programming Camp (Day 1) E题
- Petrozavodsk Summer Training Camp 2016 Problem I. Vier 随机化+枚举
- 2016 Al-Baath University Training Camp Contest-1(gym101028)
- 2016 Al-Baath University Training Camp Contest-1(gym101028)
- 2016 Al-Baath University Training Camp Contest-1
- Codeforce 2016 Al-Baath University Training Camp Contest-1
- 2016 Al-Baath University Training Camp Contest-1
- SCUT Training 20170913 Problem E
- SCUT Training 20170920 Problem E
- Tri_integral Autumn Training 2
- 2015 Autumn Training #0
- [****Camp Day 1]C. Control Point(乱搞)
- 2016 Al-Baath University Training Camp Contest-1 I. March Rain —— 二分
- HIT Training Camp III
- 排序矩阵(杨氏矩阵)找从小到大的第K个数(C++)
- 【s5p4418嵌入式学习】分步编译之kernel编译04
- Ubuntu安装anaconda做英文词云
- sscanf:从一个字符串中读进与指定格式相符的数据
- P08: 泛化物品
- Problem E. Exponial---Urozero Autumn Training Camp 2016-Day 1||指数降幂公式
- rpm: /usr/bin/rpmspec: No such file or directory error 解决办法
- Android 添加菜单和返回按钮
- NYOJ 2356 哈希计划(模拟)
- 2.分层分离
- P09: 背包问题问法的变化
- java基础之IO流--PipedOutputStream(涉及到多线程技术的管道流,比较特殊)
- bzoj 2434: [Noi2011]阿狸的打字机
- python3提示name 'cmp' is not defined