zoukankan      html  css  js  c++  java
  • wenbao与费马及快速幂

    费马小定理:

      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
    ", c % MOD);
    23     }
    24     return 0;
    25 }

    只有不断学习才能进步!

  • 相关阅读:
    校门外的树
    年龄与疾病
    数组逆序重放
    计算书费
    陶陶摘苹果
    与指定数字相同的数的个数
    上学路线
    NOIP2011 普及組 統計單詞數
    [HAOI2012]音量调节
    [USACO11JAN]利润Profits
  • 原文地址:https://www.cnblogs.com/wenbao/p/6097422.html
Copyright © 2011-2022 走看看