zoukankan      html  css  js  c++  java
  • [bzoj3884]上帝与集合的正确用法

    题意:求${2^{{2^{{2^{...}}}}}}mod p$

    解题关键:

    因为${a^n} equiv {a^{nmod varphi (p) + varphi (p)}}mod p,n > varphi (p)$

    所以,

    $egin{array}{l}
    f(p) = {2^{{2^{{2^{...}}}}}}mod p = {2^{{2^{{2^{...}}}}mod varphi (p) + varphi (p)}}mod p\
    = {2^{f(varphi (p)) + varphi (p)}}mod p
    end{array}$

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cstdlib>
     5 #include<iostream>
     6 #include<cmath>
     7 using namespace std;
     8 typedef long long ll;
     9 const int MAXN=10000000+10;
    10 int prime[MAXN];//保存素数
    11 bool vis[MAXN];//初始化
    12 int phi[MAXN];//欧拉函数
    13 void Lphisieve(int n){
    14     int cnt=0;
    15     for(int i=2;i<n;i++){
    16         if(!vis[i]){
    17             prime[cnt++]=i;
    18             phi[i]=i-1;
    19         }
    20         for(int j=0;j<cnt&&i*prime[j]<n;j++){
    21             int k=i*prime[j];
    22             vis[k]=true;
    23             if(i%prime[j]==0){
    24                 phi[k]=phi[i]*prime[j];
    25                 break;
    26             }
    27             else   phi[k]=phi[i]*(prime[j]-1);
    28         }
    29     }
    30 }
    31 
    32 ll mod_pow(ll x,ll n,ll p){
    33     ll res=1;
    34     while(n){
    35         if(n&1)   res=res*x%p;
    36         x=x*x%p;
    37         n>>=1;
    38     }
    39     return res;
    40 }
    41 
    42 ll work(ll n){
    43     if(n==1) return 0;
    44     return mod_pow(2,work(phi[n])+phi[n],n);
    45 }
    46 
    47 int main(){
    48     int T;
    49     Lphisieve(10000001);
    50     scanf("%d", &T);
    51     while(T--){
    52         ll n;
    53         scanf("%lld",&n);
    54         printf("%lld
    ",work(n));
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    测试用例
    SQL/My sql
    测试报告
    postman
    Linux环境搭建及命令
    jQuery EasyUI API 中文文档 树表格(TreeGrid)
    MYSQL学习心得(十) 自定义存储过程和函数
    webBrowser
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)前言与目录
    vim括号操作(转)
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7858099.html
Copyright © 2011-2022 走看看