首先分解质因数,$A^B=p_1^{m_1B}p_2^{m_2B}...p_n^{m_nB}$

然后的话,它的所有因数的和就是$\prod{(1+p_i^1+p_i^2+...+p_i^n)}$

用一个等比数列求和公式,变成了$\prod{\frac{p_i^{m_iB+1}-1}{p_i-1}}$

但是要求逆元的话,它的模数很小,可能求不了

所以在算$p_i^{n+1}-1$的时候先模的是$mod*(p_i-1)$,然后直接除以$p_i-1$,一定能整除

最后再模一边mod就行了

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define pa pair<int,int>
  5. #define CLR(a,x) memset(a,x,sizeof(a))
  6. using namespace std;
  7. typedef long long ll;
  8. const int maxn=1e4,P=;
  9.  
  10. inline ll rd(){
  11. ll x=;char c=getchar();int neg=;
  12. while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
  13. while(c>=''&&c<='') x=x*+c-'',c=getchar();
  14. return x*neg;
  15. }
  16.  
  17. ll p[maxn];
  18. ll n[maxn],a,b;
  19.  
  20. inline ll fmul(ll x,ll y,ll p){
  21. ll re=;
  22. while(y){
  23. if(y&) re=(re+x)%p;
  24. x=(x+x)%p,y>>=;
  25. }return re;
  26. }
  27.  
  28. inline ll fpow(ll x,ll m,ll p){
  29. ll re=;
  30. while(m){
  31. if(m&) re=fmul(re,x,p);
  32. x=fmul(x,x,p),m>>=;
  33. }return re;
  34. }
  35.  
  36. int main(){
  37. int i,j=,k;
  38. a=rd(),b=rd();
  39. for(i=;i*i<=a;i++){
  40. if(a%i==) p[++j]=i;
  41. while(a%i==) n[j]++,a/=i;
  42. }if(a!=) p[++j]=a,n[j]=;
  43. ll ans=;
  44. for(i=;i<=j;i++){
  45. ll x=fpow(p[i],n[i]*b+,(p[i]-)*P)+(p[i]-)*P-;
  46. ans=ans*(x/(p[i]-)%P)%P;
  47. }
  48. printf("%d\n",(ans+P)%P);
  49. return ;
  50. }

poj1845 sumdiv (因数的和)的更多相关文章

  1. poj1845 Sumdiv

    poj1845 Sumdiv 数学题 令人痛苦van分的数学题! 题意:求a^b的所有约数(包括1和它本身)之和%9901 这怎么做呀!!! 百度:约数和定理,会发现 p1^a1 * p2^a2 * ...

  2. POJ1845 Sumdiv(求所有因数和+矩阵快速幂)

    题目问$A^B$的所有因数和. 根据唯一分解定理将A进行因式分解可得:A = p1^a1 * p2^a2 * p3^a3 * pn^an.A^B=p1^(a1*B)*p2^(a2*B)*...*pn^ ...

  3. 约数之和(POJ1845 Sumdiv)

    最近应老延的要求再刷<算法进阶指南>(不得不说这本书不错)...这道题花费了较长时间~(当然也因为我太弱了)所以就写个比较易懂的题解啦~ 原题链接:POJ1845 翻译版题目(其实是AcW ...

  4. POJ1845 Sumdiv [数论,逆元]

    题目传送门 Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 26041   Accepted: 6430 Des ...

  5. 【题解】POJ1845 Sumdiv(乘法逆元+约数和)

    POJ1845:http://poj.org/problem?id=1845 思路: AB可以表示成多个质数的幂相乘的形式:AB=(a1n1)*(a2n2)* ...*(amnm) 根据算数基本定理可 ...

  6. POJ1845 sumdiv 数论

    正解:小学数学数论 解题报告: 传送门! 其实不难但我数学这个方面太菜了所以还是多写点儿博客趴QAQ 然后因为是英文的所以先翻译一下,,,? 大概就是说求AB的所有约数之和,对9901取膜 这个只需要 ...

  7. POJ1845 Sumdiv 数学?逆元?

    当初写过一篇分治的 题意:求A^B的所有因子之和,并对其取模 9901再输出 对于数A=p1^c1+p2^c2+...+pn*cn,它的所有约数之和为(1+p1+p1^2+p1^3+...+p1^(c ...

  8. 题解 poj1845 Sumdiv (数论) (分治)

    传送门 大意:求A^B的所有因子之和,并对其取模 9901再输出 (这题又调了半天,把n和项数弄混了QAQ) 根据算数基本定理:A=(p1^k1)*(p2^k2)*(p3^k3)*...*(pn^kn ...

  9. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

随机推荐

  1. .net WCF WF4.5 状态机、书签与持久化

    想看源码请直接翻到最后,使用方式如下图 如果同时需要多个书签可以直接在需要的位置创建书签,会认为是同一个实例. 若需要实现的效果是同时需要好几个部门审核,那么只要在对应的位置同时创建多个书签即可. 编 ...

  2. CentOS 7 安装配置带用户认证的squid代理服务器

    这里只简述搭建一个带用户认证的普通代理 一.安装 安装过程十分简便,只需要安装一下squid,一条命令搞定 yum install squid rpm -qa | grep squid squid-- ...

  3. springboot 整合spark-sql报错

    Exception in thread "main" org.spark_project.guava.util.concurrent.ExecutionError: java.la ...

  4. 快速理解Git结构

      git pull:拉取远程服务器最新代码到本地(会自动merge) git add:将本地代码添加到暂存区 git commit:将暂存区的所有内容提交到当前分支(git会自动为我们创建第一个分支 ...

  5. [转帖] SS, SP, BP 三个寄存器

    SS, SP, BP 三个寄存器 https://blog.csdn.net/vspiders/article/details/55669265 这么看 计算机组成原理 还有 考试的很多题目非常有用啊 ...

  6. [转帖]Windows 内核说明

    来源:https://zhidao.baidu.com/question/398191459.html 自己的理解. windows 的内核文件 是在 c:\windows\system32 目录下面 ...

  7. 微信小程序错误码参考大全

    开发过程中,会遇到很多微信返回的状态码,鬼知道代表什么意思,现在好了,整理总结了一份状态码,方便大家. 转载:http://www.yiyongtong.com/archives/view-1856- ...

  8. clone内容包含select2

    如果克隆的内容包含select2,克隆之后要先删除select之后自动生成的span,再对select2进行初始化,生成新的元素.

  9. npm install、npm install --save、npm install --save --dev、npm install -S、npm install -D的区别

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

  10. 如何在集合中巧用Where来查找相关元素

    在我们的项目中我们经常会查找一些集合中的重要元素,当然我们可以使用常规的foreach循环和if语句来查询,但是我们要学会使用System.Linq命名空间下面的静态类Enumerable下面的静态方 ...