就是需要用到一个欧拉定理

(a^b)%p=(a^(b%phi(p)))%p。

但是这个公式只在a与p互质的情况下才可以用。

所以需要用到一个适用范围更广的公式。

如果b>=phi(p)           (a^b)%p=(a^(b%phi(p)+phi(p)))%p。

否则                         (a^b)%p=(a^b)%p。

这样就可以降幂,然后用next_permutation函数枚举所有排列,计算出相应结果,并保存最小值即可。

这道题主要不是卡你枚举的时间复杂度,也不是卡你快速幂或者降幂的时间复杂度,而是卡你知不知道这个公式。因为如果你没有这个公式,你在求幂的过程中就不能取余,这样就会溢出,从而得不到答案。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;ll phi(ll n)
{ll ret=n;ll m=sqrt(n+0.5);for(ll i=2;i<=m;i++){if(n%i==0){ret=ret/i*(i-1);while(n%i==0) n/=i;}}if(n>1)ret=ret/n*(n-1);return ret;
}ll mp(ll x,ll n,ll m)
{ll ret=1;while(n){if(n&1){ret*=x;if(ret>=m){ret%=m;ret+=m;}}x*=x;if(x>=m){x%=m;x+=m;}n>>=1;}return ret;
}ll n,p;
ll a[10];
ll P[10];ll cul()
{ll zhi=1;for(ll i=n-1;i>=0;i--)zhi=mp(a[i],zhi,P[i]);return zhi%P[0];
}int main()
{ll T;for(scanf("%lld",&T);T;T--){scanf("%lld %lld",&n,&p);for(ll i=0;i<n;i++)scanf("%lld",&a[i]);sort(a,a+n);P[0]=p;for(ll i=1;i<n;i++)P[i]=phi(P[i-1]);ll ans=LONG_LONG_MAX;do{ans=min(ans,cul());}while(next_permutation(a,a+n));printf("%lld\n",ans);}return 0;
}

欧拉定理(Tetration,玲珑杯 Round#5 E lonlife 1060)相关推荐

  1. 玲珑杯 Round #20

    1161 - 康娜的数学课 Time Limit:1s Memory Limit:256MByte Submissions:615Solved:221 DESCRIPTION 康娜上三年级了,老师要教 ...

  2. 玲珑杯round#11 ----A

    有一批n个数据需要通过rpc调用获取信息,为了加快速度,我们想要把n个数据平均分成若干份,每份的数据量为x(x可以整除n),假设一次rpc调用所需要的时间为a+b*x^2(其中a.b为常数),那么当给 ...

  3. Alice and Bob (SG函数)

    题目 Problem Description 给出一颗满二叉树,以及每个树节点上的石头数量 A和B轮流操作,每次选择一个节点,将其上的任意个石头推向它的儿子 不能不推,若选择的节点为叶节点,则被推的石 ...

  4. python:statistics --- 数学统计函数

    python:statistics --- 数学统计函数 平均值以及对中心位置的评估 对分散程度的评估 对两个输入之间关系的统计 函数细节 异常 NormalDist 对象 NormalDist 示例 ...

  5. EXCEL取整的细节,避免出错

    1 取整的细节差别 如果是纯小数,int()+1=ceiling()否则,如果包含整数,就会错误 判断是否小数,可以查找  ".",或判断整除等 round() 可以用于取整,或至 ...

  6. Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)

    Codeforces Beta Round #17 题目链接:点击我打开题目链接 大概题意: 给你 \(b\),\(n\),\(c\). 让你求:\((b)^{n-1}*(b-1)\%c\). \(2 ...

  7. 玲珑杯”ACM比赛 Round #8-D XJT Loves Boggle(dfs)

    记录一个菜逼的成长.. DESCRIPTION Boggle is a word game designed by Allan Turoff and distributed by Hasbro. It ...

  8. “玲珑杯”ACM比赛 Round #21-C-战舰萝莉(线段树区间更新)

    "玲珑杯"ACM比赛 Round #21 Start Time:2017-09-23 17:00:00 End Time:2017-09-23 19:30:00 Refresh T ...

  9. “玲珑杯”ACM比赛 Round #18 C -- 图论你先敲完模板【Dp】

    C -- 图论你先敲完模板 Time Limit:5s Memory Limit:256MByte Submissions:660Solved:160 DESCRIPTION 今天HHHH在操场上跑步 ...

  10. “玲珑杯”ACM比赛 Round #18 ABC题解

    A -- 计算几何你瞎暴力 Time Limit:5s Memory Limit:256MByte Submissions:1597Solved:301 DESCRIPTION 今天HHHH考完了期末 ...

最新文章

  1. 实例分割综述(单阶段/两阶段/实时分割算法汇总)
  2. 欧锦赛球星谱:帕克领豪阵 诺天王对决加索尔
  3. webassembly_WebAssembly的设计
  4. android选择多个文件_一分钟合并多个Excel、PDF文件,3种方法任你选择,好用到没朋友...
  5. 登录邮箱,注意地址栏是否是https开头
  6. React 深度学习:React Core
  7. 国内6大网络信息采集和页面数据抓取工具
  8. 你的放大器是否可能自激振荡?
  9. 文件怎么批量全部打印出来,网上打印文件怎么操作
  10. 第1篇 初识IPP(Integrated Performance Primitives)
  11. X86中断-异常-APIC
  12. 如何查看目前所有会话的状态oracle,Oracle一些常用查看数据库状态SQL
  13. 完美代替IIS的网络盒子NetBox
  14. 欧姆龙PLC与DGUSⅡ屏软硬件连接指南
  15. [2018年底]电信短信自注册,rild重启等项目问题总结
  16. 软件测试笔记-软件测试的背景
  17. python中乘号怎么打出来_python怎么输入数字
  18. HTML 基本开发方式,学会常用的 HTML 标签
  19. 【OpenCV-Python】18 使用OpenCV进行人脸检测
  20. 听过微信 8.0 可以查看微信等级?

热门文章

  1. 「算法」FWT(快速沃尔什变换)
  2. 大数据入门最全组件思维导图
  3. 九、【服务器】服务器硬件名称中英文汇总2
  4. 软工作业 4:结对项目之词频统计——基本功能
  5. Ceres Solver实现简单的光束法平差
  6. Java基础:如何在IDEA中查看依赖关系
  7. 带色彩恢复的多尺度视网膜增强算法(MSRCR)的原理、实现及应用
  8. linux系统缺少perl组建中的Data::Dumper模块
  9. 高等数学:求“分段函数在分段点”的导数,可以直接用导数公式吗?
  10. DEDECMS专题制作