首页 > 移动平台 > 详细

牛客寒假算法基础集训营4 E Applese 涂颜色

时间:2019-01-31 20:18:22      阅读:159      评论:0      收藏:0      [点我收藏+]

---恢复内容开始---

链接:https://ac.nowcoder.com/acm/contest/330/E

思路:很简单,2^n,但是要注意n可以取到10的10万次方,此时要用到指数循环节降幂或者十进制快速幂(或者python)

题解:

 1 #include <iostream>
 2 #include <string>
 3 #define ll long long
 4 const ll mod = 1e9+7;
 5 using namespace std;
 6 ll quickPow(ll a,ll b)
 7 {
 8     ll ans = 1;
 9     a %= mod;
10     while(b)
11     {
12         if(b&1) ans = (ans * a) % mod;
13         a = a * a % mod;
14         b >>= 1;
15     }
16     return ans;
17 }
18 ll euler(ll n)
19 {
20     ll res = n;
21     for(int i = 2; i*i < n; i++)
22     {
23         if(n % i == 0)
24             res = res / i * (i-1);
25         while(n%i==0)
26             n /= i;
27     }
28     if(n > 1)
29         res = res / n * (n-1);
30     return res;
31 }
32 int main()
33 {
34     string s1,s2;
35     while(cin>>s1>>s2)
36     {
37         ll length = s1.size(),n = 0,p;
38         //p = mod - 1;
39         p = euler(mod);
40         for(int i = 0; i < length; i++)
41         {
42             n  =(n * 10 + (s1[i] - 0)) % p;
43         }
44         cout<<quickPow(2,n)<<endl;
45     }
46     return 0;
47 }

(抄的大佬的代码)

备注:大佬写的是指数循环节,用到欧拉降幂公式技术分享图片

接下来放出python代码:

1 print(pow(2,int(input().split()[0]),10**9+7))

吐槽:我被震撼了,python太强大了。

 总结——欧拉降幂公式

 

---恢复内容结束---

牛客寒假算法基础集训营4 E Applese 涂颜色

原文:https://www.cnblogs.com/harutomimori/p/10343260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!