根据一些书上的记载,上帝的一次失败的创世经历是这样的:
第一天, 上帝创造了一个世界的基本元素,称做“元”。
第二天, 上帝创造了一个新的元素,称作“α
α
”。“α
α
被定义为“元”构成的集合。容易发现,一共有两种不同的“α
α
”。
第三天, 上帝又创造了一个新的元素,称作“β
β
”。“β
β
”被定义为“α
α
”构成的集合。容易发现,一共有四种不同的“β
β
”。
第四天, 上帝创造了新的元素“γ
γ
”,“γ
γ
”被定义为“β
β
”的集合。显然,一共会有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 上帝的集合的更多相关文章

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

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

  2. BZOJ3884: 上帝与集合的正确用法 拓展欧拉定理

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

  3. BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)

    Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 3860  Solved: 1751[Submit][Status][Discuss] Descripti ...

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

    a^b mod P=a^(b mod phi(p)) mod p,利用欧拉公式递归做下去. 代码 #pragma comment(linker,"/STACK:1024000000,1024 ...

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

    欧拉降幂公式:http://blog.csdn.net/acdreamers/article/details/8236942 糖教题解处:http://blog.csdn.net/skywalkert ...

  6. bzoj3884: 上帝与集合的正确用法 扩展欧拉定理

    题意:求\(2^{2^{2^{2^{...}}}}\%p\) 题解:可以发现用扩展欧拉定理不需要很多次就能使模数变成1,后面的就不用算了 \(a^b\%c=a^{b\%\phi c} gcd(b,c) ...

  7. bzoj千题计划264:bzoj3884: 上帝与集合的正确用法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3884 欧拉降幂公式 #include<cmath> #include<cstdio ...

  8. BZOJ3884 上帝与集合的正确用法(欧拉函数)

    设f(n)为模n时的答案,由2k mod n=2k mod φ(n)+φ(n) mod n(并不会证),且k mod φ(n)=f(φ(n)),直接就可以得到一个递推式子.记搜一发即可. #inclu ...

  9. bzoj3884: 上帝与集合的正确用法(数论)

    感觉是今天洛谷月赛T3的弱化版,会写洛谷T3之后这题一眼就会写了... 还是欧拉扩展定理 于是就在指数上递归%phi(p)+phi(p)直到1,则后面的指数就都没用了,这时候返回,边回溯边快速幂.因为 ...

随机推荐

  1. [js]js设计模式-原型模式

    构造函数模型- 对象的属性和方法每人一份 function createJs(name, age) { this.name = name; this.age = age; this.writeJs = ...

  2. 20165321 测试-3-ch02

  3. flex检查对象是否存在某个方法(函数)、属性的最简方法

    //if("方法/属性名" in object){存在do...}else{不存在do...}if("data" in event.tagert)//只要使用这 ...

  4. centos----------centos下如何安装phpstorm

    1.首先打开centos下的谷歌浏览器,找到phpstorm官网下载linux版本.PhpStorm-2016.3.2.tar.gz 2.然后gunzip PhpStorm-2016.3.2.tar. ...

  5. mysql 存储session

    https://www.cnblogs.com/cndavidwang/p/3930619.html

  6. jQuery 筛选器2

    jQuery 筛选器2 // 由于$()只能输入字符串$('#li:eq(1)'),可通过.eq()来传入. // 获取this标签中的指定属性 $(this).eq(1) // 获取第一个元素 $( ...

  7. 剑指offer(8)跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析 题目很简单,稍微分析就知道这是斐波那契数列,所以可以动态规划来做 a.如果两种跳法,1阶 ...

  8. Day 10733 使用独立安装包安装.Net Framework 4.6.2时,提示『无法建立到信任根颁发机构的证书链』

    出现该问题的原因是未能更新本机的受信任证书颁发机构证书列表,导致安装包验证失败,以下几种情况可以造成此问题: 1.安装该运行库的系统未接入互联网: 2.安装该运行库的系统所在的网络环境,屏蔽了对微软受 ...

  9. asp.net 后台 get,post请求

    //Post请求 public static string Post(string url,string obj=null) { string param = (obj);//参数 byte[] bs ...

  10. 关于变量,JAVA基本数据类型,运算符类型,如何从控制台接收输入的数据

    一,变量与变量的使用 1.变量是在程序运行中其值可以改变的量,java程序的一个基本存储单元 2.变量的使用 变量类型+变量名 二,JAVA基本数据类型 1.数值型a.整点类型(byte.short. ...