传送门:http://poj.org/problem?id=1845

大致题意:

求A^B的所有约数(即因子)之和,并对其取模 9901再输出。

解题基础:

1) 整数的唯一分解定理

任意正整数都有且只有一种方式写出其素因子的乘积表达式。

,其中为素数

2) 约数和公式

对于已经分解的整数,A的所有因子之和为

3) 同余模公式

(a+b)%m=(a%m+b%m)%m

(a*b)%m=(a%m*b%m)%m

1: 对A进行素因子分解

这里如果先进行筛50000内的素数会爆空间,只能用最朴素的方法进行分解

2:A^B的所有约数之和为

3: 求2中的等比序列

由于给的数据量大,肯定不能直接用等比序列的求和公式,要用分治法进行求解

一直对递归求解

S的下标为偶数类比一下

4:反复平方法计算幂次式

一个快速幂取模的板子,直接套上

#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
int p[10000];
int q[10000];
const int mod = 9901;
//快速幂取模板子
long long qucick_pow(int m, int n, int moD)
{
if(n == 0)
return 1;
long long x = qucick_pow(m, n / 2, moD);
long long ans = x * x % mod;
if(n % 2)
ans = ans * m % mod;
return ans;
}
// 递归求解等比数列
long long sum(int m, int n)
{
if(n == 0)
return 1;
if(n % 2)
{
return (sum(m, n / 2) * (1 + qucick_pow(m, n / 2 + 1, mod))) % mod;
}
else
{
return (sum(m, n / 2 - 1) * (1 + qucick_pow(m, n / 2 + 1, mod)) + qucick_pow(m, n / 2, mod)) % mod;
}
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int cnt = 0;
for(int i=2;i*i<=a;)
{
if(a%i==0)
{
p[cnt]=i;
while(a%i==0)
{
a/=i;
q[cnt]++;
}
cnt++;
}
if(i==2)
i+=1;
else
i+=2;
}
if(a!=1)
p[cnt]=a,q[cnt++]=1;
long long ans = 1;
for(int i = 0; i < cnt; i++)
{
ans = (ans * (sum(p[i], q[i] * b) % mod)) % mod;
}
cout << ans % mod << endl;
}

最新文章

  1. C#设计模式之组合
  2. WCF之net.tcp
  3. BZOJ 1076 & 撞鸭递推
  4. Python 之 lamda 函数
  5. DOS与批处理
  6. PHP安装memcache扩展接口步骤
  7. java\c程序的内存分配
  8. 【maven 报错】maven项目update之后报错One or more constraints have not been satisfied.
  9. PHP读取xml方法讲解
  10. 使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure
  11. js中singleton模式解析及运用
  12. sql server的两个类型转换函数
  13. Python 对Twitter中指定话题的被转载Tweet数量的频谱分析
  14. javascript中关于this指向问题详解
  15. Docker核心实现技术(命名空间&amp;控制组&amp;联合文件系统&amp;Linux网络虚拟化支持)
  16. Fiddler之iOS手机抓包实战操作
  17. Spring Cloud Config采用Git存储时两种常用的配置策略
  18. type__列表
  19. 【QT】QPixmap在Label中自适应大小铺满
  20. 深入java final关键字

热门文章

  1. 几道简单的线段树入门题 POJ3264&amp;&amp;POJ3468&amp;&amp;POJ2777
  2. # vim ~/.vimrc vim配色
  3. C++基础--函数模板
  4. unique constraint(PD.HSI_RIGHT) violated
  5. python-局域网内实现web页面用户端下载文件,easy!
  6. cmake的find_package()简单总结
  7. C# Socket编程入门
  8. UVA_11525 树状数组的活用 二分
  9. 10 Json(unity3D)
  10. centos7-DNS(主从)