题目描述

根据一些书上的记载,上帝的一次失败的创世经历是这样的:
第一天, 上帝创造了一个世界的基本元素,称做“元”。
第二天, 上帝创造了一个新的元素,称作“α”。“α”被定义为“元”构成的集合。容易发现,一共有两种不同的“α”。
第三天, 上帝又创造了一个新的元素,称作“β”。“β”被定义为“α”构成的集合。容易发现,一共有四种不同的“β”。
第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合。显然,一共会有16种不同的“γ”。
如果按照这样下去,上帝创造的第四种元素将会有65536种,第五种元素将会有2^65536种。这将会是一个天文数字。
然而,上帝并没有预料到元素种类数的增长是如此的迅速。他想要让世界的元素丰富起来,因此,日复一日,年复一年,他重复地创造着新的元素……
然而不久,当上帝创造出最后一种元素“θ”时,他发现这世界的元素实在是太多了,以致于世界的容量不足,无法承受。因此在这一天,上帝毁灭了世界。
至今,上帝仍记得那次失败的创世经历,现在他想问问你,他最后一次创造的元素“θ”一共有多少种?
上帝觉得这个数字可能过于巨大而无法表示出来,因此你只需要回答这个数对p取模后的值即可。
你可以认为上帝从“α”到“θ”一共创造了10^9次元素,或10^18次,或者干脆∞次。
一句话题意:

Input

接下来T行,每行一个正整数p,代表你需要取模的值

Output

T行,每行一个正整数,为答案对p取模后的值

Sample Input

3
2
3
6

Sample Output

0
1
4

HINT

对于100%的数据,T<=1000,p<=10^7

输入

输出

提示

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 10001000
using namespace std;
int Phi(int x)
{int i,re=x;for(i=2;i*i<=x;i++)if(x%i==0){re/=i;re*=i-1;while(x%i==0)x/=i;}if(x^1) re/=x,re*=x-1;return re;
}
int Quick_Power(long long x,int y,int p)
{long long re=1;while(y){if(y&1) (re*=x)%=p;(x*=x)%=p; y>>=1;}return re;
}
int Solve(int p)
{if(p==1) return 0;int temp=0;while(~p&1) p>>=1,++temp;int phi_p=Phi(p);int re=Solve(phi_p);(re+=phi_p-temp%phi_p)%=phi_p;re=Quick_Power(2,re,p)%p;return re<<temp;
}
int main()
{int T,p;for(cin>>T;T;T--){scanf("%d",&p);printf("%d\n",Solve(p));}return 0;
}

转载于:https://www.cnblogs.com/hfang/p/11256764.html

上帝与集合的正确用法(bzoj3884)相关推荐

  1. BZOJ-3884 上帝与集合的正确用法 欧拉定理

    再次仰望高端玩家Po姐 3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 772 Solved: 361 [Submit] ...

  2. bzoj 3884: 上帝与集合的正确用法(欧拉函数)

    3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 2574  Solved: 1151 [Submit][Status] ...

  3. 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理

    题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α&quo ...

  4. 【BZOJ3884】【降幂大法】上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  5. [题解]bzoj3884 上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  6. BZOJ3884 上帝与集合的正确用法 (欧拉定理)

    根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天,  上帝创造了一个世界的基本元素,称做"元". 第二天,  上帝创造了一个新的元素,称作"α". ...

  7. bzoj3884上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  8. bzoj3884 上帝与集合的正确用法

    题意:求2^2^2^2^2.......^2%p的值,T组询问. 欧拉降幂多用几次就好了. 顺便试了下fwrite输出优化 ,效果显著. #include<cstring> #includ ...

  9. BZOJ3884上帝与集合的正确用法-欧拉函数

    刚开始我想的是欧拉降幂,可是觉得复杂度还是挺高的就去找了一下题解. 思路大方向没有问题,仍然是使用欧拉函数降低指数然后递归处理.但是不是简单的使用欧拉降幂而是应该对模数p稍微处理一下.因为底数已经确定 ...

最新文章

  1. 桥接模式和路由模式区别_【微课堂】路由器设置:桥接模式vs路由模式
  2. python 粒子动画_初试PyOpenGL四 (Python+OpenGL)GPU粒子系统与基本碰撞
  3. 【数字智能三篇】之一: 一页纸说清楚“什么是大数据”
  4. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分
  5. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
  6. (转)标准I/O缓冲:全缓冲、行缓冲、无缓冲 .
  7. display:none和visibility:hidden两者的区别
  8. android开发,设置listview的高度无效
  9. 《C++语言入门经典》一第3章 重要的逻辑工具——判断与循环 3.1 条件判断...
  10. php display block,CSS display (block inline none )常见属性和用法教程
  11. ATM机为什么不能存100张?
  12. 使用递归解决斐波那契数列的性能问题
  13. vim 命令模式下光标移动
  14. JAVA基础常见的知识点
  15. 装修行业百家号粉丝量统计(2019.12.24)
  16. 这可能是目前最方便的网站中英文切换(理论支持所有语言)
  17. 微信小游戏实战——飞机大战demo笔记完整篇(函数实现)
  18. centos安装g77编译器
  19. WDNet—2020ECCV
  20. IOS 实现美图秀秀

热门文章

  1. Flink 在唯品会的实践
  2. Java 正青春:现状与技术趋势报告
  3. 在地理文本处理技术上,高德有哪些技巧?
  4. 从《爱莉克斯》说起,聊聊当前 VR 游戏设计的“困境”与“尝试”
  5. 如何解决游戏延迟,增强用户体验? 几种可行方案分享
  6. 地平线:黎明时分中的云渲染技术
  7. 题目: javaweb前端素材管理系统(附免费下载源码链接)
  8. Java最大公共子串(动态规划)
  9. Goldengate DDL复制相关注意事项
  10. 如何估算Oracle数据库所需的UNDO表空间的大小