用基本算数定理求约数和的思想来计算,

首先用pi,ci来表示第i个质数,指数为i,然后对于每个pi,pi^2...都有指数为mul{(c_1+1)(c_2+1)(c_i-1+1)(c_i+1+1)...}的贡献,所以枚举累乘即可

注意要用欧拉降幂来计算质数,同时用中间挖掉一个值的累乘,可以预处理前缀后缀乘积来做

  1. /*
  2. 枚举每个不同的质因子pi,枚举其指数[1,ci]
  3. 累乘每个pi^ci的贡献即可
  4. */
  5. #include<bits/stdc++.h>
  6. using namespace std;
  7. #define N 200005
  8. #define ll long long
  9. #define mod 1000000007
  10.  
  11. ll n,a[N];
  12. ll p[N],c[N],m;
  13. ll suf[N],pre[N],ans;
  14. ll Pow(ll a,ll b){
  15. ll res=;
  16. while(b){
  17. if(b%)
  18. res=res*a%mod;
  19. b>>=;a=a*a%mod;
  20. }
  21. return res;
  22. }
  23.  
  24. int main(){
  25. cin>>n;
  26. for(int i=;i<=n;i++)cin>>a[i];
  27. sort(a+,a++n);
  28. for(int i=;i<=n;i++){
  29. if(p[m]!=a[i]){
  30. p[++m]=a[i];
  31. c[m]=;
  32. }
  33. else c[m]++;
  34. }
  35.  
  36. suf[m+]=;pre[]=;
  37. for(ll i=m;i>=;i--)
  38. suf[i]=suf[i+]*(c[i]+)%(mod-);
  39. for(ll i=;i<=m;i++)
  40. pre[i]=pre[i-]*(c[i]+)%(mod-);
  41.  
  42. ans=;
  43. for(ll i=;i<=m;i++){
  44. ll tmp=;
  45. ll prod=pre[i-]*suf[i+]%(mod-);
  46. for(ll j=;j<=c[i];j++){
  47. tmp=tmp*p[i]%mod;
  48. ans=ans*Pow(tmp,prod)%mod;
  49. }
  50. }
  51. cout<<ans<<endl;
  52. }

欧拉降幂,基本计算定理——cf615D的更多相关文章

  1. CodeForces - 906D Power Tower(欧拉降幂定理)

    Power Tower CodeForces - 906D 题目大意:有N个数字,然后给你q个区间,要你求每一个区间中所有的数字从左到右依次垒起来的次方的幂对m取模之后的数字是多少. 用到一个新知识, ...

  2. [数学][欧拉降幂定理]Exponial

    Exponial 题目 http://exam.upc.edu.cn/problem.php?cid=1512&pid=4 欧拉降幂定理:当b>phi(p)时,有a^b%p = a^(b ...

  3. HDU4704(SummerTrainingDay04-A 欧拉降幂公式)

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

  4. 2018牛客网暑期ACM多校训练营(第四场) A - Ternary String - [欧拉降幂公式][扩展欧拉定理]

    题目链接:https://www.nowcoder.com/acm/contest/142/A 题目描述 A ternary string is a sequence of digits, where ...

  5. FZU:1759-Problem 1759 Super A^B mod C (欧拉降幂)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=1759 欧拉降幂是用来干啥的?例如一个问题AB mod c,当B特别大的时候int或者longlong装不下的时 ...

  6. 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)

    阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K   目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...

  7. HDU - 4704 sum 大数取余+欧拉降幂

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

  8. 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板

    链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...

  9. 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂

    2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n ...

随机推荐

  1. PHP getcwd() 函数

    获取当前工作目录: <?phpecho getcwd()?> 结果: /home/php 定义和用法 getchwd() 函数返回当前工作目录. 语法 getcwd(); 技术细节 返回值 ...

  2. RBAC权限设计(一)

    序言 RBAC表结构 用户表 角色表 权限表 用户角色(关系)表 角色权限(关系)表 sql脚本 /* Navicat MySQL Data Transfer Source Server : 127. ...

  3. 安装纯净版debian!

    kali更新了1.1.0a,不知道新版的内核哪地方有bug,用着用着就卡死了,一怒之下卸载了装debian. 下载的netinst只有200M,基本上就是刚好能用,不要用硬盘装,会找不到网卡,无线也没 ...

  4. 20175213 2018-2019-2 《Java程序设计》第10周学习总结

    Java内存模型 主内存与工作内存 Java内存模型主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.此处的变量(Variable)与Java编程中 ...

  5. win10在bios上还原系统

    遇到两次,win10系统,自动更新后,c盘好像被格式化了,桌面啥都没了,那个气啊.记录下怎么恢复的. 参考https://www.kafan.cn/edu/50206642.html,中的方法1. 通 ...

  6. DCloud-Video:Html5 Video 实现方案

    ylbtech-DCloud-Video:Html5 Video 实现方案 1.返回顶部 1.1. http://ask.dcloud.net.cn/article/569 1.2. 一. Html5 ...

  7. Portal for ArcGIS启动失败,无法访问任何门户计算机,请联系您的系统管理员。

    1.如题,打开Portal门户的时候,发现: 2.检查日志发现Portal for ArcGIS没启动,日志地址:D:\Program Files\ArcGIS\Portal\framework\se ...

  8. Apache和Tomcat的区别是什么?

    Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...

  9. 推荐MarkDown编辑工具Typora--文本画流程图示例

    程序员界名言:talk is cheap, show me the code CODE: ### 8. 修改预留手机号-per.MCReservedMobilePhoneUpd #### 8.1业务规 ...

  10. php被遗忘的参数 pcntl

    phpinfo () CTRL+ F–enable-pcntl今天居然可以用到.哈 狗屎运. 来自t00ls < ?php /******************************* *查 ...