1. 程式人生 > >wenbao與費馬及快速冪

wenbao與費馬及快速冪

fine define ron ace play size int isp 費馬小定理

費馬小定理:

  a^(b-1)%b == 1; (a, b互素)

費馬大定理:

  a^(@b)%b == 1;(@b為歐拉函數)

快速冪:

  

根據冪次方的性質進行處理log2(b)次

隨便說一下為什麽很多題目取模的時候會用到 1e9+7 ? 因為它是素數(它的孿生素數 1e9+9 )任何數對大素數取模得到的答案能有效的減少沖突(如果取模的數不是素數那麽會有許多同余的情況)

1 //求a^b;
2 
3 const int MOD = 1e9+7;
4 ll sum = 1;
5 while(b){
6     if
(b & 1) sum = sum*a%MOD; 7 sum >>= 1; 8 a = a*a%MOD; 9 }

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 using namespace std;
 5 #define ll long long
 6 const ll MOD = 1e9+7;
 7 ll a, c;
 8 char str[100005];
 9 int main(){
10 while(~scanf("%lld%s%lld", &a, str, &c)){ 11 a %= MOD, c %= MOD; 12 ll sum = 0; 13 int len = strlen(str); 14 for(int i = 0; i < len; i++){ 15 sum = (sum*10 + str[i] - 0) % (MOD - 1LL); 16 } 17 while(sum){ 18 if
(sum & 1) c = c * a % MOD; 19 sum >>= 1; 20 a = a * a % MOD; 21 } 22 printf("%lld\n", c % MOD); 23 } 24 return 0; 25 }

只有不斷學習才能進步!

wenbao與費馬及快速冪