bzoj3884 上帝的集合
- 根据一些书上的记载,上帝的一次失败的创世经历是这样的:
- 第一天, 上帝创造了一个世界的基本元素,称做“元”。
- 第二天, 上帝创造了一个新的元素,称作“α
- α
- ”。“α
- α
- 被定义为“元”构成的集合。容易发现,一共有两种不同的“α
- α
- ”。
- 第三天, 上帝又创造了一个新的元素,称作“β
- β
- ”。“β
- β
- ”被定义为“α
- α
- ”构成的集合。容易发现,一共有四种不同的“β
- β
- ”。
- 第四天, 上帝创造了新的元素“γ
- γ
- ”,“γ
- γ
- ”被定义为“β
- β
- ”的集合。显然,一共会有16
- 种不同的“γ
- γ
- ”。
- 如果按照这样下去,上帝创造的第四种元素将会有65536种,第五种元素将会有265536
- 种。这将会是一个天文数字。
- 然而,上帝并没有预料到元素种类数的增长是如此的迅速。他想要让世界的元素丰富起来,因此,日复一日,年复一年,他重复地创造着新的元素……
- 然而不久,当上帝创造出最后一种元素“θ
- θ
- ”时,他发现这世界的元素实在是太多了,以致于世界的容量不足,无法承受。因此在这一天,上帝毁灭了世界。
- 至今,上帝仍记得那次失败的创世经历,现在他想问问你,他最后一次创造的元素“θ
- θ
- ”一共有多少种?
- 上帝觉得这个数字可能过于巨大而无法表示出来,因此你只需要回答这个数对p
- p
- 取模后的值即可。
- 你可以认为上帝从“α
- α
- ”到“θ
- θ
- ”一共创造了109
- 次元素,或1018
- 次,或者干脆∞
- ∞
- 次。
- 一句话题意:
- Input
- 接下来T
- T
- 行,每行一个正整数p
- p
- ,代表你需要取模的值
- Output
- T
- T
- 行,每行一个正整数,为答案对p
- p
- 取模后的值
- Sample Input
- Sample Output
- HINT
- 对于100%
- %
- 的数据,T≤,p≤
做牛客多校回来清这题
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<cstdlib>
- #include<ctime>
- #include<vector>
- #include<map>
- using namespace std;
- #define ll long long
- map<ll,ll>f;
- ll phi(ll n)
- {
- ll rea=n;
- for(ll i=;i*i<=n;i++)
- if(n%i==)
- {
- rea=rea-rea/i;
- do
- n/=i;
- while(n%i==);
- }
- if(n>)
- rea=rea-rea/n;
- return rea;
- }
- ll qsm(ll a,ll b,ll c)
- {
- ll ret = ;
- for (;b;b >>= ,(a *= a)%=c)
- if (b & ) (ret *= a)%=c;
- return ret;
- }
- ll fun(ll p)
- {
- if(f.count(p))
- return f[p];
- ll q=phi(p);
- return f[p]=qsm(,fun(q)+q,p);
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- f[]=;
- while(n--)
- {
- ll m;
- scanf("%lld",&m);
- printf("%lld\n",fun(m));
- }
- return ;
- }
bzoj3884 上帝的集合的更多相关文章
- bzoj3884上帝与集合的正确用法
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...
- BZOJ3884: 上帝与集合的正确用法 拓展欧拉定理
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...
- BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3860 Solved: 1751[Submit][Status][Discuss] Descripti ...
- bzoj3884 上帝与集合的正确用法
a^b mod P=a^(b mod phi(p)) mod p,利用欧拉公式递归做下去. 代码 #pragma comment(linker,"/STACK:1024000000,1024 ...
- bzoj3884: 上帝与集合的正确用法 欧拉降幂公式
欧拉降幂公式:http://blog.csdn.net/acdreamers/article/details/8236942 糖教题解处:http://blog.csdn.net/skywalkert ...
- bzoj3884: 上帝与集合的正确用法 扩展欧拉定理
题意:求\(2^{2^{2^{2^{...}}}}\%p\) 题解:可以发现用扩展欧拉定理不需要很多次就能使模数变成1,后面的就不用算了 \(a^b\%c=a^{b\%\phi c} gcd(b,c) ...
- bzoj千题计划264:bzoj3884: 上帝与集合的正确用法
http://www.lydsy.com/JudgeOnline/problem.php?id=3884 欧拉降幂公式 #include<cmath> #include<cstdio ...
- BZOJ3884 上帝与集合的正确用法(欧拉函数)
设f(n)为模n时的答案,由2k mod n=2k mod φ(n)+φ(n) mod n(并不会证),且k mod φ(n)=f(φ(n)),直接就可以得到一个递推式子.记搜一发即可. #inclu ...
- bzoj3884: 上帝与集合的正确用法(数论)
感觉是今天洛谷月赛T3的弱化版,会写洛谷T3之后这题一眼就会写了... 还是欧拉扩展定理 于是就在指数上递归%phi(p)+phi(p)直到1,则后面的指数就都没用了,这时候返回,边回溯边快速幂.因为 ...
随机推荐
- Python开发环境Linux配置
1. 在Windows下安装Linux的连接工具(XShell),选免费的 2.虚拟机安装,注意BIOS对虚拟机使用的设置(enable) 3.虚拟机安装好修改yum源(用阿里云的):https:// ...
- 好的封装 vs 好的复用
好的封装 vs 好的复用好的封装 一个封装相对较好的体现和实现方式如下:内部类的方式来组织代码,不需要外面的类指导我内部的类. 好的复用一个好的复用的体现和实现方式如下:可以通过搭积木的方式来组织功能 ...
- Linux应用之crontab定时任务的设置
实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使 ...
- flex检查对象是否存在某个方法(函数)、属性的最简方法
//if("方法/属性名" in object){存在do...}else{不存在do...}if("data" in event.tagert)//只要使用这 ...
- 清空nohup日志
#清空nohup日志cat /dev/null > /tpdata/www/wxapp_domain/nohup.out
- Java 五大原则
1.单一职责 不论是在设计类,接口还是方法,单一职责都会处处体现,单一职责的定义:我们把职责定义为系统变化的原因.所有在定义类,接口,方法的时候.定义完以后再去想一想是不能多于一个的动机去改变这个类, ...
- 数据挖掘算法——Close算法
说明奥:菜鸟的自我学习,可能有错. Close算法原理: 一个频繁闭合项目集的所有闭合子集一定是频繁的,一个非频繁闭合项目集的所有闭合超集一定是非频繁的. close算法是对Apriori算法的改进 ...
- 20190402Linux高级命令进阶(week1_day2
Linux高级命令进阶(week1_day2) 输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技 ...
- K8S学习笔记之Kubernetes数据持久化方案
在开始介绍k8s持久化存储前,我们有必要了解一下k8s的emptydir和hostpath.configmap以及secret的机制和用途. 0x00 Emptydir EmptyDir是一个空目录, ...
- Java 解析Excel(xls、xlsx两种格式)
Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...