• bzoj3884: 上帝与集合的正确用法 欧拉降幂公式


     

    欧拉降幂公式:http://blog.csdn.net/acdreamers/article/details/8236942

    糖教题解处:http://blog.csdn.net/skywalkert/article/details/43955611

    注:知道欧拉公式是远远不够的,还要知道欧拉降幂公式,因为当指数很大的时候需要用

          然后欧拉降幂公式不要求A,C互质,但是B必须大于等于C的欧拉函数

    吐槽:感觉记忆化搜索影响不大啊,当然肯定是因为太水了

    这样复杂度是O(T*sqrt(p)*logp)

    #include <stdio.h>
    #include <iostream>
    #include <algorithm>
    #include <string.h>
    #include <vector>
    #include <math.h>
    #include <stack>
    #include <map>
    using namespace std;
    typedef long long LL;
    const int N = 11;
    int qpow(int a,int b,int mod){
      int ret=1;
      while(b){
        if(b&1)ret=1ll*ret*a%mod;
        a=1ll*a*a%mod;
        b>>=1;
      }
      return ret;
    }
    int eular(int x){
       int ret=x;
       for(int i=2;i*i<=x;++i){
         if(x%i)continue;
         ret=ret/i*(i-1);
         while(x%i==0)x/=i;
       }
       if(x>1)ret=ret/x*(x-1);
       return ret;
    }
    int f(int x){
      if(x==1)return 0;
      int phi=eular(x);
      return qpow(2,f(phi)+phi,x);
    }
    int main(){  
      int T;
      scanf("%d",&T);
      while(T--){
        int p;
        scanf("%d",&p);
        printf("%d
    ",f(p));
      }
      return 0;
    }
    View Code
  • 相关阅读:
    故障转移集群的仲裁
    部署AlwaysOn第一步:搭建Windows服务器故障转移集群
    行级安全(Row-Level Security)
    B-树和B+树的应用
    SpringMVC之HandlerAdapter解析
    SpringMVC 请求响应流程
    Java热部署相关
    ZooKeeper实现分布式锁
    Redis整合Spring实现分布式锁
    分布式锁原理及实现方式
  • 原文地址:https://www.cnblogs.com/shuguangzw/p/5697183.html
Copyright © 2020-2023  润新知