Product

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

Problem Description
Given a number sequence A1,A2....An,indicating N=∏ni=1iAi.What is the product of all the divisors of N?
 
Input
There are multiple test cases.
First line of each case contains a single integer n.(1≤n≤105)
Next line contains n integers A1,A2....An,it's guaranteed not all Ai=0.(0≤Ai≤105).
It's guaranteed that ∑n≤500000.
 
Output
For each test case, please print the answer module 109+7 in a line.
 
Sample Input
4
0 1 1 0
5
1 2 3 4 5
 
Sample Output
36
473272463
 
Source
 
题意:

  1. #pragma comment(linker, "/STACK:1024000000,1024000000")
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cmath>
  5. #include<string>
  6. #include<queue>
  7. #include<algorithm>
  8. #include<stack>
  9. #include<cstring>
  10. #include<vector>
  11. #include<list>
  12. #include<set>
  13. #include<map>
  14. using namespace std;
  15. #define ll long long
  16. #define pi (4*atan(1.0))
  17. #define eps 1e-14
  18. #define bug(x) cout<<"bug"<<x<<endl;
  19. const int N=2e5+,M=4e6+,inf=;
  20. const ll INF=1e18+,mod=1e9+;
  21.  
  22. /// 数组大小
  23. int prime(int n)
  24. {
  25. if(n<=)
  26. return ;
  27. if(n==)
  28. return ;
  29. if(n%==)
  30. return ;
  31. int k, upperBound=n/;
  32. for(k=; k<=upperBound; k+=)
  33. {
  34. upperBound=n/k;
  35. if(n%k==)
  36. return ;
  37. }
  38. return ;
  39. }
  40.  
  41. vector<int>p;
  42. int si[N];
  43. void init()
  44. {
  45. for(int i=;i<=;i++)
  46. if(prime(i))
  47. p.push_back(i);
  48. }
  49. ll quick(ll a,ll b,ll c)
  50. {
  51. ll ans=;
  52. while(b)
  53. {
  54. if(b&)ans=(ans*a)%c;
  55. b>>=;
  56. a=(a*a)%c;
  57. }
  58. return ans;
  59. }
  60. int main()
  61. {
  62. init();
  63. int n;
  64. while(~scanf("%d",&n))
  65. {
  66. memset(si,,sizeof(si));
  67. for(int i=;i<=n;i++)
  68. {
  69. int z;
  70. int x=i;
  71. scanf("%d",&z);
  72. for(int j=;j<p.size();j++)
  73. {
  74. if(1LL*p[j]*p[j]>x)break;
  75. if(x==)break;
  76. while(x%p[j]==)
  77. {
  78. si[j]+=z;
  79. si[j]=(si[j])%(*(mod-));
  80. x/=p[j];
  81. }
  82. }
  83. if(x!=)
  84. {
  85. int pos=lower_bound(p.begin(),p.end(),x)-p.begin();
  86. si[pos]+=z;
  87. }
  88. }
  89. ll sum=;
  90. for(int i=;i<p.size();i++)
  91. {
  92. sum*=(si[i]+);
  93. sum%=(*(mod-));
  94. }
  95. //cout<<sum<<endl;
  96. ll ans=;
  97. for(int i=;i<p.size();i++)
  98. {
  99. ans=(ans*quick(p[i],((sum*si[i])%(*(mod-)))/,mod))%(mod);
  100. }
  101. printf("%lld\n",ans);
  102. }
  103. return ;
  104. }

hdu 5525 Product 数论算贡献的更多相关文章

  1. HDU 5525 Product 数论

    题意: 给出一个长度为\(n(1 \leq n \leq 10^5)\)的序列\(A_i\),\(N=\prod\limits_{i=1}^{n}i^{A_i}\).求\(N\)的所有约数的乘积. 分 ...

  2. Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song 算贡献+前缀和

    E. Pretty Song time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. hdu 5228 OO’s Sequence(单独取数算贡献)

    Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...

  4. HDU 5525:Product 欧拉定理

    Product  Accepts: 21  Submissions: 171  Time Limit: 6000/3000 MS (Java/Others)  Memory Limit: 131072 ...

  5. hdu GuGuFishtion 6390 数论 欧拉函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6390 直接开始证明: 我们设…………………………………….....…...............………… ...

  6. HDU 1299 基础数论 分解

    给一个数n问有多少种x,y的组合使$\frac{1}{x}+\frac{1}{y}=\frac{1}{n},x<=y$满足,设y = k + n,代入得到$x = \frac{n^2}{k} + ...

  7. 2019ICPC西安邀请赛 - B. Product - 数论

    打印的时候麻烦把:https://blog.csdn.net/skywalkert/article/details/50500009这个打印下来. 求\(\prod\limits_{i=1}^{n} ...

  8. 模拟+算贡献——cf1195D

    比赛的时候没看到模数,用java大数在写,最后看到的时候已经慌了.. 把贡献算清楚就可以 下面是贡献的推导 有五位数 abcde * 10个 有两位数 fg * 3 个 那么这两种数组成的情况就是 a ...

  9. 2019牛客多校第七场 F Energy stones 树状数组+算贡献转化模拟

    Energy stones 题意 有n块石头,每块有初始能量E[i],每秒石头会增长能量L[i],石头的能量上限是C[i],现有m次时刻,每次会把[s[i],t[i]]的石头的能量吸干,问最后得到了多 ...

随机推荐

  1. virtualBox虚拟机联网

    1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

  2. [How to] ROOT, Backup & Flash (MTKDroidTools, Spflashtool, CWM)

    这是一篇来自xda论坛的文章,写得很详细,很有用,以下是原文: Hi This is a guide to ROOT, backup and flash your MTK65xx or Other d ...

  3. Amaze UI JS 气泡弹出

    http://amazeui.org/javascript/popover?_ver=2.x

  4. POJ 1182 并查集

    Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到 ...

  5. HDU 1586 log 的运用

    log函数的应用,因为 log(a^b)=b*log(a); log(a*b)=log(a)+log(b); 比如 log10(123456789)==log10(1.23456789)+8; log ...

  6. 《算法C语言实现》————三道题目

    1.对于N = 10,100和1000,记录你的运行环境中分别运行一下程序所花费的时间.(用python) import datetime global a a = 0 def time_1(s): ...

  7. Linux命令:删除与恢复命令

    敲命令按以下顺序 ①vim filename ②e ③i ④ESC 删除命令: x(小写):删除光标所在处字符. dd:删除光标所在的行. D:删除从光标所在之处开始直到该行末尾的全部字符. < ...

  8. Windows批处理程序bat

    @echo off    关闭回显,否则脚本中的命令都会输出,关闭后只显示结果. setlocal ENABLEDELAYEDEXPANSION 在for循环中变量扩展时需要用到 copy /Y ms ...

  9. linux常用命令:ifconfig 命令

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  10. JS函数调用的四种方法

    js的函数调用会免费奉送两个而外的参数就是 this 和 arguments .arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度. 书上有说4中调用方式: 方 ...