题面戳这里

啥都别看,只是求

\(a^b\)所有的因数的和

思路:

真没想到!

其实我们可以先将\(a^b\)分解成质因数

因为\(a^b\)的因数肯定是\(a^b\)的质因数在一定的条件下相乘而成的

然后组合一下

正解!!!

h^ovny:走开!别误导别人!

来一波公式:

\(a=\Pi^n_{i=1}p[i]^{c[i]}\)

\(a^b=\Pi^n_{i=1}p[i]^{c[i]*b}\)

所有因数的和:

\(Ans=\Pi_{i=1}^n\Sigma^{k[i]}_{j=0}p[i]^j\)

\(\Pi\) :读作Pi,是\(\pi\)的大写,表示累乘

\(\Sigma\) :读作Sigma,是\(\sigma\)的大写,表示累加

现在的问题就变成了如何求:

\(\Sigma_{j=0}^{k[i]}\)

展开来写乘:

\((1+p+p^2+p^3+…+p^k)\)

用分治法的思想求解

k奇数时:

\(f(k)=1+p+p^2+p^3+…+p^k\)

​ \(= (1+p+…+p^{\frac k 2})+(p^{\frac k 2+1}+…+p^k)\)

​ \(= (1+p+…+p^{\frac k 2})+p^{\frac k 2+1}*(1+p+…+p^{\frac k 2})\)

​ \(= (p^{\frac k 2+1}+1)*(1+p+…+p^{\frac k 2})\)

k偶数

\(f(k)=f(k-1)*p^k\)

然后配合快速幂%9901

正解!!!

人已憔悴

Code:

#include<cstdio>
#include<iostream>
#define ll long long
#define Mod 9901
using namespace std;
ll a[30];
ll s[30];
bool b[10010];
ll n,m;
int t;
ll ans=1;
int read()
{
int s=0;
char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
{
s=(s<<1)+(s<<3)+c-'0';
c=getchar();
}
return s;
}
ll quickPow(ll a,ll b)
{
ll res=1;
while(b>0)
{
if(b&1)
res=(res*a)%Mod;
b>>=1;
a=(a*a)%Mod;
}
return res;
}
ll work(ll p,ll k)
{
if(k==1)
return (p+1)%Mod;
if(k==0)
return 1;
if(k&1)
return work(p,k/2)*(quickPow(p,k/2+1)+1)%Mod;
return ((work(p,k/2-1)*(quickPow(p,k/2)+1))%Mod+quickPow(p,k))%Mod;
}
int main()
{
int i,j;
n=read();m=read();
if(n%2==0)
{
a[++t]=2;
while(n%2==0)
{
s[t]++;
n/=2;
}
}
for(i=3;i*i<=n;i+=2)
if(!b[i])
{
if(n%i==0)
{
a[++t]=i;
while(n%i==0)
{
s[t]++;
n/=i;
}
}
j=i+i;
while(j*j<=n)
{
b[j]=1;
j+=i;
}
}
if(n>1)
{
a[++t]=n;
s[t]=1;
}
for(i=1;i<=t;i++)
ans=(ans*work(a[i],s[i]*m))%Mod;
printf("%lld",ans);
return 0;
}

「Poj1845」Sumdiv 解题报告的更多相关文章

  1. 「ZJOI2016」旅行者 解题报告

    「ZJOI2016」旅行者 对网格图进行分治. 每次从中间选一列,然后枚举每个这一列的格子作为起点跑最短路,进入子矩形时把询问划分一下,有点类似整体二分 至于复杂度么,我不会阿 Code: #incl ...

  2. 「HNOI2016」树 解题报告

    「HNOI2016」树 事毒瘤题... 我一开始以为每次把大树的子树再接给大树,然后死活不知道咋做,心想怕不是个神仙题哦 然后看题解后才发现是把模板树的子树给大树,虽然思维上难度没啥了,但是还是很难写 ...

  3. 「HNOI2016」序列 解题报告

    「HNOI2016」序列 有一些高妙的做法,懒得看 考虑莫队,考虑莫队咋移动区间 然后你在区间内部找一个最小值的位置,假设现在从右边加 最小值左边区间显然可以\(O(1)\),最小值右边的区间是断掉的 ...

  4. 「HNOI2016」网络 解题报告

    「HNOI2016」网络 我有一个绝妙的可持久化树套树思路,可惜的是,它的空间是\(n\log^2 n\)的... 注意到对一个询问,我们可以二分答案 然后统计经过这个点大于当前答案的路径条数,如果这 ...

  5. 「HAOI2018」染色 解题报告

    「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...

  6. 「HNOI2016」最小公倍数 解题报告

    「HNOI2016」最小公倍数 考虑暴力,对每个询问,处理出\(\le a,\le b\)的与询问点在一起的联通块,然后判断是否是一个联通块,且联通块\(a,b\)最大值是否满足要求. 然后很显然需要 ...

  7. 「SCOI2016」围棋 解题报告

    「SCOI2016」围棋 打CF后困不拉基的,搞了一上午... 考虑直接状压棋子,然后发现会t 考虑我们需要上一行的状态本质上是某个位置为末尾是否可以匹配第一行的串 于是状态可以\(2^m\)压住了, ...

  8. 「SCOI2016」妖怪 解题报告

    「SCOI2016」妖怪 玄妙...盲猜一个结论,然后过了,事后一证,然后假了,数据真水 首先要最小化 \[ \max_{i=1}^n (1+k)x_i+(1+\frac{1}{k})y_i \] \ ...

  9. 「SCOI2016」美味 解题报告

    「SCOI2016」美味 状态极差无比,一个锤子题目而已 考虑每次对\(b\)和\(d\)求\(c=d \ xor \ (a+b)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ...

随机推荐

  1. saltStack 配置管理(也就是替换文件)

    目录  /srv/salt/base下面新建一个文件dns.sls /opt/resolv.conf_bak:     #这个是文件替换的位置,也就说替换到远程文件的/opt/resolv.conf_ ...

  2. winform(C#)里弹出“确定”“取消”对话框

    //消息框中需要显示哪些按钮,此处显示“确定”和“取消” MessageBoxButtons messButton = MessageBoxButtons.OKCancel; //"确定要退 ...

  3. activiti工作流引擎之uel表达式

    qq讨论群:313032825本人做了一个微信公众号,用于分享各类视频学习资源和我多年学习经验,喜欢的可以关注哦! 有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购 ...

  4. phpstorm IDEA 双击Shift键会弹出 SearchEverywhere 对话框,如何取消这个功能

    https://blog.csdn.net/qq_27598243/article/details/80526352 解决方法:一:Open lib/resources.jar/idea/Platfo ...

  5. PHP 面试题三

    1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tush ...

  6. H3C 寻找邻居

  7. document.getElementById()

    使用两个for循环取json数据的时候出错: 代码简化如下: for(var a=0;a<3;a++){ for(var b=0;b<3;b++){ document.getElement ...

  8. H3C IPv6地址解析

  9. H3C DHCP服务器基本配置

  10. 用nodejs创建服务器显示html页面

    nodejs版本:v10.14.2 1.首先准备一个简单的html页面 <!DOCTYPE html> <html lang="en"> <head& ...