题目描述

给定A,B,求A^B的所有因数的和,再MOD 9901

输入

一行两个整数 A 和 B。

输出

一行,一个整数

样例输入

2 3

样例输出

15

提示

对于100%的数据满足:0 <= A,B <= 50000000

这道题首先要想到有一个因数和公式

f[a] = ( 1 + p1 + p1^2 + .... + p1^q1 ) * ( 1 + p2 + p2^2 + .... + p2^q2 ) * ...... * ( 1 + pn + pn^2 +.....+ pn^qn )

由此我们知道,这道题需要分解质因数(唯一分解定理???

A^B可以直接分A,每个分出数的指数再×B就行(这应该都会

所以我们可以先打个素数表..

因为a,b都在50000000,计算器一算7000多的表就够了..

我们再观察因数和公式,如果一个一个求救太麻烦了,我们就发现了这是等比数列啊!!!

等比数列公式相信大家都会...

因为除数可能为负数,所以式子要上下都×-1整理一下

但这又有可能出现不是整数的情况,我们就需要用乘法逆元了(当时我卡在这了

这里先贴一个写的挺好的乘法逆元

inline long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
if(a==&&b==)
return -1ll;
if(b==)
{
x=1ll;
y=0ll;
return a;
}
long long d=extend_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
inline long long mod_reverse(long long a,long long n)
{
long long x,y,d=extend_gcd(a,n,x,y);
if(d==)
return (x%n+n)%n;
else
return -1ll;
}

快速幂和乘法取模就不说了

下面贴代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
ll vis[]={};
ll ys[]={},zs[]={};
ll vis1[]={};
ll ac[]={};
using namespace std;
ll n;
ll qmod(ll i,ll j)
{
ll ans=;
while(j)
{
if(j&)
{
ans*=i;
ans%=;
}
i=i*i%;
j>>=;
}
return ans%;
}
void prime()
{
ll i,j,k=;
for(i=;i<=;i++)
{
vis[i]=i;
}
i=;
while(i*i<=)
{
if(vis[i]!=)
{
j=i<<;
while(j<=)
{
if(vis[j]!=)
{
k++;
}
vis[j]=;
j=j+i;
}
}
i++;
}
}
int main()
{
ll k=;
ll i,j;
ll A,b;
ll a,n;
cin>>a>>b;
A=a;
n=sqrt(a);
prime();
for(i=;i<=n;i++)
{
while((vis[i]!=)&&(a%vis[i]==))
{
vis1[i]=;
ys[k]=vis[i]%;
zs[k]++;
a=a/vis[i];
}
if(vis1[i]==)
{
k++;
}
}
k--;
ll step=;
ll re=,cf=;
if(a!=&&a!=A)
{
ys[k+]=a%;
zs[k+]=;
step=;
}
else
if(a==A)
{
ys[]=a%;
zs[]=;
k=;
}
if(step==)
{
k++;
}
ll count=;
for(i=;i<=k;i++)
{
if(zs[i]!=)
{
zs[i]=zs[i]*b;
count++;
}
}
for(i=;i<=count;i++)
{
ll a1=qmod(ys[i]%,zs[i]+);
a1=a1-;
ll temp=(ys[i]-)%;
ll a2=qmod(temp,);
ac[i]=((a1%)*(a2%))%;
}
ll sum=ac[];
for(i=;i<=count;i++)
{
sum=((sum%)*(ac[i]%))%;
}
cout<<sum;
}

最新文章

  1. 简约而不简单的Django新手图文教程
  2. Python In Action:一、入门小例子
  3. M3U8格式讲解及实际应用分析
  4. 转 Eric Raymond对于几大开发语言的评价
  5. Thumbnailator压缩图片
  6. 实验12:Problem G: 强悍的矩阵运算来了
  7. Java设计模式---装饰模式
  8. MySQL引擎简述
  9. 点击下拉,其余不动的jquery事件(转)
  10. MyBatis_查询缓存01
  11. Eclipse调试(1)——基础篇
  12. MyBatis3系列__04CRUD以及参数处理
  13. 内存管理-slab[原理]
  14. Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题
  15. 【托业】【新托业TOEIC新题型真题】学习笔记4-题库一-&gt;P7
  16. java里面main函数为什么要用static修饰
  17. 【项目 &#183; Wonderland】预则立 &amp;&amp; 他山之石
  18. php读取用友u8客户档案
  19. 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”
  20. 【13】JMicro微服务-ID生成与Redis

热门文章

  1. 使用Nodejs进行反向代理
  2. nginx源码分析——configure脚本
  3. eclipse--java工程转web工程 以及 java或java web工程转maven工程
  4. vue组件(将页面公用的头部组件化)
  5. Struts2之 OGNL表达式和值栈
  6. POJ 1007
  7. 镜像的缓存特性 - 每天5分钟玩转 Docker 容器技术(14)
  8. NancyFx 2.0的开源框架的使用-Stateless
  9. vue之nextTick全面解析
  10. Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX