题意:给你a,b,要求给出a^b的因子和取模9901的结果。

思路:求因子和的方法:任意A = p1^a1 * p2^a2 ....pn^an,则因子和为sum =(1 + p1 + p1^2 + ... . + p1^a1)*(1 + p2 + p2^2 + ... . + p2^a2)*(1 + pn + pn^2 + .... + pn^an)。又由等比数列求和公式可知 1 + pn + pn^2 + .... + pn^an =(pn^an - 1)/(pn - 1)。因为要mod 9901,所以除数取模要用到逆元:A / B mod m = (A mod(B * m))/ B。在快速幂求解过程中会爆过程,所以手动写了乘法。

参考:逆元详解   【逆元】

补充:

任意A = p1^a1 * p2^a2 ....pn^an

因数和:sum =(1 + p1 + p1^2 + ... . + p1^a1)*(1 + p2 + p2^2 + ... . + p2^a2)*(1 + pn + pn^2 + ... . + pn^an)

因数个数:num = (a1 + 1)*(a2 + 1)....(an + 1)

代码:

#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = + ;
const int seed = ;
const int MOD = ;
const int INF = 0x3f3f3f3f;
ll mul(ll a, ll b, ll c){
ll ans = ;
while(b){
if(b & ){
ans = ans + a;
if(ans > c) ans -= c;
}
a = a + a;
if(a > c) a -= c;
b >>= ;
}
return ans;
}
ll pmul(ll a, ll b, ll c){
a = a % c;
ll ans = ;
while(b){
if(b & ) ans = mul(ans, a, c);
a = mul(a, a, c);
b >>= ;
}
return ans;
}
int main(){
ll a, b;
while(~scanf("%lld%lld", &a, &b)){
ll ans = ;
for(ll i = ; i * i <= a; i++){
if(a % i == ){
ll num = ;
while(a % i == ){
a /= i;
num++;
}
ans *= (pmul(i, b * num + , (i - ) * MOD) - ) / (i - );
ans %= MOD;
}
}
if(a > ){
ans *= (pmul(a, b + , (a - ) * MOD) - ) / (a - );
ans %= MOD;
}
printf("%lld\n", ans);
}
return ;
}

最新文章

  1. Service and controller in angularJs
  2. jquery判断页面滚动条(scroll)是上滚还是下滚,且是否滚动到头部或者底部
  3. Stern-Brocot树 及 法里级数分析
  4. JAVA中的break[标签]continue[标签]用法
  5. 关于Devexpress15.2中GridControl控件选择字段ColumnEdit下拉时间设置
  6. [转]PHP开发者必须了解的工具—Composer
  7. Eclipse Build path
  8. Win7 配置免安装mysql5.7.20过程详解
  9. gulp 添加版本号 解决浏览器缓存问题
  10. How to ignore files and directories in subversion?
  11. centos7 搭建WEB服务器
  12. iOS - 开发屏幕及视图层次
  13. 部分真验货客户未取进FP IN_SALES_ORDER表有数据,前台规划页面没显示
  14. debian 7上安装svn
  15. PAT乙级1032
  16. linux强制踢掉登录用户【转】
  17. Python学习(二)Python 简介
  18. 高阶篇:4.2.1)DFMEA框架搭建,填写项目与要求
  19. ScrollView 和 ListView 冲突解决方案
  20. POJ1160 Post Office (四边形不等式优化DP)

热门文章

  1. CentOS VmwareTools安装
  2. 最强Mac电脑 工作站级别一体机iMac Pro公布
  3. MUTABLE和IMMUTABLE集合
  4. POJ:1182 食物链(带权并查集)
  5. easyUI的datebox添加清空按钮功能
  6. R实现的最小二乘lsfit函数学习
  7. 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
  8. EXTJS 4.2.1.883 Summary 合计栏宽度bug
  9. 使用fiddler对手机APP进行抓包
  10. c++移动构造函数