2691. Sumdiv

★★★   输入文件:sumdiv.in   输出文件:sumdiv.out   简单对比
时间限制:1 s   内存限制:12 MB

【题目描述】

考虑两个自然数A和B.定义S是A ^ B的所有自然因数的总和。确定S模9901的值。

【输入格式】

唯一的行包含由空格分隔的两个自然数A和B(0 <= A,B <= 50000000)。

【输出格式】

输出一行,即S模9901。

【样例输入】

2 3

【样例输出】

15

样例解释:2 ^ 3 = 8。 8的自然因数是:1,2,4,8。他们的和是15。 15模9901是15(应该输出)。

【来源】

POJ1845

/*
题意:求A^B 所有约数(因子)之和mod 9901。 应用质因数分解+约数和公式+逆元+等比数列求和公式
A=p1^k1*p2^k2*...pn^kn
A^B=p1^(k1*B)*p2^(k2*B)...pn^(kn*B)
约数和公式:Sum=(1+p1+p1^2+...+p1^k1)*(1+p2+p2^2+...+p2^k2)*(......pk^kn)
Sum(A^B)=(1+p1+p1^2+...+p1^k1*B)*(1+p2+p2^2+...+p2^k2*B)*(......pk^kn*B) mod 9901
对于每一个 (1+p1+p1^2+...+p1^k1*B),根据等比数列求和公式为 [1-p1^(1+k1*B)]/(1-p1) mod 9901
根据逆元公式:a/b mod m=(a mod mb )/b
原式= [p1^(k1*B+1)-1] mod [9901*(p1-1)] / (p1-1)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
#define mod 9901
#define N 10005
int p[N],cnt;
ll A,B;
bool prime[N];
void Isprime(){
for(int i=;i<N;i++)
if(!prime[i]){
p[++cnt]=i;
for(int j=i+i;j<N;j+=i)
prime[j]=;
}
}
ll slow_mul(ll a,ll b,ll m){
ll result=;a%=m;
while(b){
if(b&){result=(result+a)%m;}
b>>=;
a=(a+a)%m;
}
return result;
}
ll fast_pow(ll a,ll b,ll m){
ll result=;a%=m;
while(b){
if(b&)result=slow_mul(result,a,m);
b>>=;
a=slow_mul(a,a,m);
}
return result;
}
int main(){
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
//freopen("cola.txt","r",stdin);
scanf("%lld%lld",&A,&B);
if(A==){printf("");return ;}
Isprime();
ll ans=;
for(int i=;p[i]*p[i]<=A;i++){//质因数分解
if(A%p[i]==){
int num=;
while(A%p[i]==)num++,A/=p[i];
ll M=mod*(p[i]-);
ans*=(fast_pow(p[i],num*B+,M)-)/(p[i]-);
ans%=mod;
}
}
if(A>){
ll M=(A-)*mod;
ans*=(fast_pow(A,B+,M)-)/(A-);
ans%=mod;
}
printf("%lld",ans);
}

最新文章

  1. Centos 6.5 X64 环境下编译 hadoop 2.6.0 --已验证
  2. ArcEngine 栅格数据
  3. Java实现点击一个Jlabel增加一个Jlabel的小功能
  4. Android AIDL 进行进程间通讯(IPC)
  5. 续Gulp使用入门三步压缩图片
  6. 表单form action的url写法
  7. domion Designer 管理员ID过期
  8. XML学习笔记(2)--dom4j操作XML
  9. ASP.NET MVC Spring.NET 整合
  10. 纯CSS3实现超立体的3D图片侧翻倾斜效果
  11. C++断言assert
  12. Java整型数组的最大长度到底有多长?
  13. Partition List -- LeetCode
  14. bzoj4554: [Tjoi2016&amp;Heoi2016]游戏 二分图匹配
  15. java垃圾回收的分类
  16. Hbase问题
  17. Java调用WebService就是这么简单
  18. Selenium高亮页面对象
  19. Spark 编程模型(上)
  20. 【刷题】BZOJ 2190 [SDOI2008]仪仗队

热门文章

  1. 【linux】记录一次系统被攻击的处理过程
  2. Java for LeetCode 116 Populating Next Right Pointers in Each Node
  3. Linux学习之路(四)帮助命令
  4. 高并发压力下导致数据库bug
  5. 分享知识-快乐自己:SpringMvc整合遇到-前台传JSON参数,后台实体类对象接收
  6. python做图笔记
  7. nginx websocket
  8. 编写html页面时常见的问题(二)
  9. EntityFramework Code First 构建外键关系,数据库不生成外键约束
  10. AI-Info-Micron-Insight:案例分析:美光使用数据和人工智能来发现、倾听和感觉