码迷,mamicode.com
首页 > 其他好文 > 详细

计蒜客 17414 Exponial 指数降幂公式

时间:2017-10-04 14:22:33      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:链接   return   for   mod   div   ref   exp   com   color   

链接:

https://nanti.jisuanke.com/t/17414

题意:

求f(n) = n ^ f(n-1) % m

题解:

指数降幂公式

技术分享

代码:

31 ll n, m;
32 
33 ll getphi(ll n) {
34     ll ans = n;
35     for (ll i = 2; i*i <= n; i++) if (n%i == 0) {
36         ans -= ans / i;
37         while (n%i == 0) n /= i;
38     }
39     if (n > 1) ans -= ans / n;
40     return ans;
41 }
42 
43 ll mod_pow(ll x, ll n, ll mod) {
44     int res = 1;
45     while (n) {
46         if (n & 1) res = res * x % mod;
47         x = x * x % mod;
48         n >>= 1;
49     }
50     return res;
51 }
52 
53 ll f(ll n, ll m) {
54     if (m == 1) return 0;
55     if (n < 5) {
56         ll ans = 1;
57         rep(i, 1, n + 1) ans = mod_pow(i, ans, m);
58         return ans;
59     }
60     ll phi = getphi(m);
61     ll z = f(n - 1, phi);
62     ll ans = mod_pow(n, phi + z, m);
63     return ans;
64 }
65 
66 int main() {
67     ios::sync_with_stdio(false), cin.tie(0);
68     cin >> n >> m;
69     cout << f(n, m) << endl;
70     return 0;
71 }

 

计蒜客 17414 Exponial 指数降幂公式

标签:链接   return   for   mod   div   ref   exp   com   color   

原文地址:http://www.cnblogs.com/baocong/p/7625386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!