POJ1845:http://poj.org/problem?id=1845

思路:

AB可以表示成多个质数的幂相乘的形式:AB=(a1n1)*(a2n2)* ...*(amnm)

根据算数基本定理可以得约数之和sum=(1+a1+a12+...+a1n1)*(1+a2+a22+...+a2n2)*...*(1+am+am2+...+amnm) mod 9901

对于每个(1+ai+ai2+...+aini) mod 9901=(ai(ni+1)-1)/(ai-1) mod 9901 (等比数列前n项目和)分母可用快速幂算出

因为9901是质数,只要ai-1不是9901的倍数就只要计算ai-1的乘法逆元inv(用费马小定理),再乘(ai(ni+1)-1) 直接算出ans

PS:若ai-1是9901的倍数 此时乘法逆元不存在 但是ai mod 9901=1 所以1+ai+ai2+...+aini=1+1+...+1=ni+1

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
#define mod 9901
int a,b,m,ans=;
int p[],c[];//p是质数 c是指数
void divide(int n)
{
m=;
for(int i=;i*i<=n;i++)
{
if(n%i==)
{
p[++m]=i;
c[m]=;
while(n%i==)
{
n/=i;
c[m]++;
}
}
}
if(n>)
{
p[++m]=n;
c[m]=;
}
}
int quickpow(int a,long long b)
{
int c=;
for(;b;b>>=)
{
if(b&)
c=(long long)c*a%mod;
a=(long long)a*a%mod;
}
return c;
}
int main()
{
cin>>a>>b;
divide(a);//分解A的质因数 b到后面在乘上
for(int i=;i<=m;i++)
{
if((p[i]-)%mod==)//特判当ai-1是9901的倍数 乘法逆元不存在
{
ans=((long long)b*c[i]+)%mod*ans%mod;
continue;
}
int x=quickpow(p[i],(long long)b*c[i]+);//快速幂求分母
x=(x-+mod)%mod;
int y=p[i]-;
y=quickpow(y,mod-);//根据费马小定理求乘法逆元
ans=(long long)ans*x%mod*y%mod;
}
cout<<ans;
}

最新文章

  1. Daily Scrum Meeting ——FirstDay(Beta)12.09
  2. 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
  3. 【原创】三分钟教你学会MVC框架——基于java web开发(2)
  4. POJ3686 The Windy&#39;s(最小费用最大流)
  5. HDU 3854 Glorious Array(树状数组)
  6. CISCO3560 VLAN配置实例
  7. [golang学习] 在idea中code &amp; debug
  8. 使用Nginx SSI功能辅助HTML页面设计
  9. 主题:PageRank解释
  10. Property工具类,Properties文件工具类,PropertiesUtils工具类
  11. Sql Server脚本使用TFS版本控制
  12. Callable+Future+newFixedThreadPool的应用
  13. Linux(Ubuntu 16) 下Java开发环境的配置(一)------JDK的配置
  14. TableLaout
  15. Deploy .NET Core with Docker
  16. 35 【kubernetes】configMap
  17. HTML 标记 3 —— 框架
  18. Python2 - MySQL适配器 MySQLdb
  19. git通过diff文件,合并未上传代码库代码
  20. (最短路)Silver Cow Party --POJ--3268

热门文章

  1. Prometheus TSDB分析
  2. UML建模—EA创建Class(类图)
  3. jQuery easyUI 的combogrid进行模糊匹配
  4. log4net日记文件路径动态配置
  5. js 正则表达式简易教程
  6. Popularize what is heart of mobile phone?
  7. php *-devel
  8. 使用 richtextbox 输出程序运行信息
  9. java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract
  10. 【Spring实战】—— 1 入门讲解