乘法逆元+快速幂

Posted chaoswr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘法逆元+快速幂相关的知识,希望对你有一定的参考价值。

唉...

 1 #include <iostream>
 2 #include <string.h>
 3 #include <cstdio>
 4 #include <queue>
 5 #include <map>
 6 #include <vector>
 7 #include <string>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <math.h>
11 
12 #define SIGMA_SIZE 26
13 #pragma warning ( disable : 4996 )
14 
15 using namespace std;
16 typedef long long LL;
17 
18 inline LL LMax(LL a,LL b)    { return a>b?a:b; }
19 inline LL LMin(LL a,LL b)    { return a>b?b:a; }
20 inline int Max(int a,int b) { return a>b?a:b; }
21 inline int Min(int a,int b) { return a>b?b:a; }
22 inline int gcd( int a, int b ) { return b==0?a:gcd(b,a%b); }
23 inline int lcm( int a, int b ) { return a/gcd(a,b)*b; }  //a*b = gcd*lcm
24 const LL INF = 0x3f3f3f3f3f3f3f3f;
25 const LL mod  = 1000000007;
26 const int inf  = 0x3f3f3f3f;
27 const int maxk = 1e5+5;
28 const int maxn = 1e5+5;
29 
30 int K;
31 char str[maxn];
32 
33 //计算a的b次方取模
34 LL getm( LL a, LL b, LL m )
35 {
36     LL ans = 1, base = a;
37     while( b )  
38     {  
39         if ( b & 1 )
40             ans = (ans * base) % m;
41         base = ( base * base ) % m;
42         b >>= 1;  
43     }  
44     return ans;
45 }
46 
47 // 求a关于p的逆元
48 LL getn( LL a, LL p )
49 { return getm( a, p-2, p ); }
50 
51 int main()
52 {
53     cin >> K;
54     scanf( "%s", str );
55 
56     LL ans = 0;
57     int len = strlen(str);
58 
59     LL inv, a1 = 0;
60     LL p = 1, tmp = getm( 2, len, mod );
61     LL sum = 0;
62 
63 
64 
65     p = getm( tmp, K, mod );
66     inv = getn( tmp-1, mod );
67     sum = ( ((p-1)%mod) * (inv%mod) ) %mod;
68 
69     for (int i = len - 1; i >= 0; i--)
70     {
71         if (str[i] == 0 || str[i] == 5)
72         {
73             a1 = getm( 2, i, mod );
74             ans += (a1*sum)%mod;
75             ans %= mod;
76         }
77     }
78 
79     printf( "%lld\n", ans );
80 
81     return 0;
82 }

 

以上是关于乘法逆元+快速幂的主要内容,如果未能解决你的问题,请参考以下文章

快速幂运算+快速幂求乘法逆元

乘法逆元(快速幂)

乘法逆元+快速幂

51 Nod 1013 3的幂的和 矩阵链乘法||逆元+快速幂

51Nod 1013 3的幂的和 快速幂 | 乘法逆元 | 递归求和公式

HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)