Luogu 4139 上帝与集合的正确用法_dashu497731727的博客-程序员秘密

扩展欧拉定理:$a^{b} \equiv a^{b Mod \varphi  (p) + \varphi  (p)}  (Mod  p)  $ $(b \geq \varphi (p))$ 。

这道题中$\varphi (p)$一定是一个偶数,所以余数为$0$。

这样子的话只需要递归求解就可以了,可以知道一定不会超过$log$层。

时间复杂度$O(maxN + Tlognlogn)$。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;

const int N = 1e7 + 5;

int testCase, pCnt, pri[N];
ll n, phi[N];
bool np[N];

template <typename T>
inline void read(T &X) {
    X = 0; char ch = 0; T op = 1;
    for(; ch > '9'|| ch < '0'; ch = getchar())
        if(ch == '-') op = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar())
        X = (X << 3) + (X << 1) + ch - 48;
    X *= op;
}

void sieve() {
    phi[1] = 1LL;
    for(int i = 2; i < N; i++) {
        if(!np[i]) pri[++pCnt] = i, phi[i] = i - 1;
        for(int j = 1; j <= pCnt && i * pri[j] < N; j++) {
            np[i * pri[j]] = 1;
            if(i % pri[j] == 0) {
                phi[i * pri[j]] = phi[i] * pri[j];
                break;
            }
            phi[i * pri[j]] = phi[i] * (pri[j] - 1);
        }
    }
}

inline ll pow(ll a, ll b, ll P) {
    ll res = 1LL;
    for(; b > 0; b >>= 1) {
        if(b & 1) res = res * a % P;
        a = a * a % P;
    }
    return res;
}

ll solve(ll now) {
    if(now == 1) return 0;
    return pow(2LL, phi[now] + solve(phi[now]), now);
}

int main() {
    sieve();
    for(read(testCase); testCase--; ) {
        read(n);
        printf("%lld\n", solve(n));
    }
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/CzxingcHen/p/9556355.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dashu497731727/article/details/102320921

智能推荐

用list去初始化numpy的array数组 numpy的array和python中自带的list之间相互转化_weixin_33717117的博客-程序员秘密

http://blog.csdn.net/baiyu9821179/article/details/53365476 a=([3.234,34,3.777,6.33]) a为python的list类型将a转化为numpy的array:  np.array(a)array([  3.234,  34.   ,   3.777,   6.33 ]) 将a转化为python的list...

hadoop编译报错_location: variable record of type_迷途小码的博客-程序员秘密

错误1:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure:[ERRO

shell中的for循环出现语法错误(syntax error: bad for loop variable)_weixin_30627341的博客-程序员秘密

出现这种错误是因为有些linux系统默认会使用ash进行编译shell脚本,我的机器就是这样,但是我写的脚本是应该用bash执行的。虽然我在开头注明了#!/bin/bash,好像它还是默认去找了ash,真是让人无奈。上网搜索了一下,找到两种解决方案:1、修改脚本 2、修改系统默认执行shell的工具第一种的具体做法就是,原来的for循环类似这种 for(( i=1; i&lt;3; i++))...

第953期机器学习日报(2017-04-28)_ai100_ml的博客-程序员秘密

机器学习日报 2017-04-28Python/Gensim文档相似度入门@爱可可-爱生活新近值得尝试的5个聊天机器人@ChatbotsChina入门:文本表示模型综述 @PaperWeekly错误拼写数据集 @爱可可-爱生活Keras使用速查表 @爱可可-爱生活@好东西传送门 出品,由@AI100运营, 过往目录 见http://ml.memect.com订阅

idea配置gradle出现的问题_不喂鱼的博客-程序员秘密

关于idea配置gradle,百度一下到处都有。无非就是下载gradle包,然后配置一个仓库,再配置一个使用路径,还有选择当前使用的JDK就可以了。 背景:本来一直用maven的,但是忽然来了一个gradle的项目需要维护。这个项目在同事那边很简单的配置就可以了,但是我这边一直没能启,总是报下面这个错。百度找了很多也没找到相关的案例。Caused by: org.gradle.launcher.daemon.client.DaemonConnectionException:...

随便推点

树莓派 USB摄像头_卡小葵的博客-程序员秘密

USB摄像头连接之后检查是否存在输入ls/dev可以直接在文件里面看有无video0文件或者在下面直接看有无video02.安装fswebcam,访问摄像头sudo apt-get install fswebcam3.拍照 sudo fswebcam 123.jpg(延迟n秒拍摄 fswebcam -S n 123.jpg)4.打开图片 gpicview 123.jpgUML...

emmc技术_emmc page_nwpu053883的博客-程序员秘密

存储器芯片发展历史上,有sram, ddr等内存产品有nor flash, nand flash等非易失性存储介质。nor flash相对容量较小, 但可随机存取, 故可片上运行。之前2009年左右做过一些mtk6223 功能手机采用的就nor flash作为主存。容量可能也就64MB, 128MB左右。nand flash容量较大, 但不能随机存取, 故只能作为存...

ASP.NET Core 实现 简单文件服务器_love_pgme的博客-程序员秘密

首先新建一个ASP.NET Core项目,选择空的模板。使用NuGet命令添加Microsoft.AspNetCore.StaticFiles引用:Install-Package Microsoft.AspNetCore.StaticFiles添加好引用以后,在Startup.cs中的Configure方法下添加如下代码: public void Confi...

asp net core Remote Validation 无法验证_weixin_30640291的博客-程序员秘密

asp net core Remote Validation 无法验证 【注意这里,Remote Validation是需要引入Jquery插件和启用客户端验证的】 ...

IPP希尔伯特变换_ippsmagnitude_32fc_hello jin的博客-程序员秘密

在数学和信号处理中,希尔伯特变换(Hilbert transform)是一个对函数产生定义域相同的函数的线性算子。在inter ipp 库中有实现该算法,示例如下:IppStatus hilbert(Ipp32f* pInputDat, Ipp32fc* pOutDat,int iLen){ int n; IppStatus status; IppsHilbertSp...

JAVA获取服务器路径_open404的博客-程序员秘密

JAVA获取服务器路径文章分类:Web前端 获取服务器路径 在JSF环境中获取到ServletContext: ServletContext sc = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext(); 参考:http://tmsoft.lsxy.com...

推荐文章

热门文章

相关标签