poj1845 Sumdiv 数学题

令人痛苦van分的数学题!

题意:求a^b的所有约数(包括1和它本身)之和%9901

这怎么做呀!!!

百度:约数和定理,会发现 p1^a1 * p2^a2 * ... * pn^an
这个数的约数和是:
(1 + p1 + p1^2 + ... + p1^a1) * (1 + p2 + ... + p2^a2) * ... * (1 + pn + ... + pn^an)

证明:由乘法原理可直接证明

然后我们对于a^b运用这个公式即可。
那么对于 (1 + pi + ... + pi^ai) 我们难道要暴力求吗?
不,这显然是个等比数列!我们用公式!

那么我们就成功WA了!

…查找原因,发现q-1可能是9901的整数倍,导致无法求逆元。
那么我们退而求次,用递归求和!

a1 + a1*q + a1*q^2 + ... + a1*q^n = (q^(n/2) + 1) * (a1 + a1*q + ... + a1*q^(n/2))

把上面那个式子分n的奇偶讨论一下就行了。

(法②:当q-1为9901的整数倍时,q % 9901 = 1,又因为a1 = 1,上式显然为n + 1)

然后我们开开心心的调了一年之后WA了….
查找原因:没开long long导致qpow爆了
然后就A了!

 //poj1845 sumdiv
#include <cstdio>
using namespace std;
const int N = ,mo = ;
int p[N][],P;
int qpow(int a,int b) {
int ans=;
while(b) {
if(b&) {
ans=ans*a%mo;
}
a=a*a%mo;
b=b>>;
}
return ans;
} void split(int a,int b) {
for(int i=; a>; i++) {
if(!(a%i)) {
p[++P][] = i;
}
while(!(a%i)) {
a/=i;
p[P][]++;
}
}
for(int i=; i<=P; i++) {
p[i][]*=b;
}
return;
} long long getQsum(int a1,int q,int n) {
if(q==) {
return a1*n%mo;
}
if(n==) {
return a1;
}
if(n&) { //奇数
long long ans = ((+qpow(q,n>>))*getQsum(a1,q,n>>)+(a1*qpow(q,n-)))%mo;
return ans;
}
//偶数
long long ans = ((+qpow(q,n>>))*(getQsum(a1,q,n>>)))%mo;
return ans;
} void solve() {
long long ans=;
for(int i=; i<=P; i++) {
int temp=getQsum(,p[i][],p[i][]+);
ans*=temp;
ans%=mo;
}
printf("%I64d",ans);
return;
} int main() {
//freopen("in.in","r",stdin);
//freopen("my.out","w",stdout);
int a,b;
scanf("%d%d",&a,&b);
if(!a) {
printf("");
return ;
}
split(a,b);
solve();
return ;
}

AC代码:

我们学到了什么?

我们学到了什么?

  1. 约数和定理
  2. How to 求逆元
  3. How to 递归求等比数列和
  4. 开long long!!!!

————————end————————

poj1845 Sumdiv的更多相关文章

  1. POJ1845 Sumdiv [数论,逆元]

    题目传送门 Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 26041   Accepted: 6430 Des ...

  2. 【题解】POJ1845 Sumdiv(乘法逆元+约数和)

    POJ1845:http://poj.org/problem?id=1845 思路: AB可以表示成多个质数的幂相乘的形式:AB=(a1n1)*(a2n2)* ...*(amnm) 根据算数基本定理可 ...

  3. 约数之和(POJ1845 Sumdiv)

    最近应老延的要求再刷<算法进阶指南>(不得不说这本书不错)...这道题花费了较长时间~(当然也因为我太弱了)所以就写个比较易懂的题解啦~ 原题链接:POJ1845 翻译版题目(其实是AcW ...

  4. POJ1845 Sumdiv(求所有因数和+矩阵快速幂)

    题目问$A^B$的所有因数和. 根据唯一分解定理将A进行因式分解可得:A = p1^a1 * p2^a2 * p3^a3 * pn^an.A^B=p1^(a1*B)*p2^(a2*B)*...*pn^ ...

  5. poj1845 sumdiv (因数的和)

    首先分解质因数,$A^B=p_1^{m_1B}p_2^{m_2B}...p_n^{m_nB}$ 然后的话,它的所有因数的和就是$\prod{(1+p_i^1+p_i^2+...+p_i^n)}$ 用一 ...

  6. POJ1845 sumdiv 数论

    正解:小学数学数论 解题报告: 传送门! 其实不难但我数学这个方面太菜了所以还是多写点儿博客趴QAQ 然后因为是英文的所以先翻译一下,,,? 大概就是说求AB的所有约数之和,对9901取膜 这个只需要 ...

  7. POJ1845 Sumdiv 数学?逆元?

    当初写过一篇分治的 题意:求A^B的所有因子之和,并对其取模 9901再输出 对于数A=p1^c1+p2^c2+...+pn*cn,它的所有约数之和为(1+p1+p1^2+p1^3+...+p1^(c ...

  8. 题解 poj1845 Sumdiv (数论) (分治)

    传送门 大意:求A^B的所有因子之和,并对其取模 9901再输出 (这题又调了半天,把n和项数弄混了QAQ) 根据算数基本定理:A=(p1^k1)*(p2^k2)*(p3^k3)*...*(pn^kn ...

  9. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

随机推荐

  1. POJ_1185_炮兵阵地 dp+状态压缩

    题目:炮兵阵地 链接:http://poj.org/problem?id=1185 解题思路: 首先用 int 来表示每一行的情况,比如说第一行是k1,那么[ k1&(k1>>2) ...

  2. Oracle 检查约束check

    --检查约束 create table test1( id ) primary key, email ) check (email like '%@%') ) drop table test1 ,'1 ...

  3. 为什么js中要用void 0 代替undefined

    这个是Backbone.js中的一句源码 if (callback !== void 0 && 'context' in opts && opts.context == ...

  4. MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别

    参考:MySQL中KEY.PRIMARY KEY.UNIQUE KEY.INDEX 的区别 对于题目中提出的问题,可以拆分来一步步解决.在 MySQL 中 KEY 和 INDEX 是同义.那这个问题就 ...

  5. mysql第一天【mysqldump导出数据和mysql导入数据】

    1.使用mysqldump导出数据到本地sql文件 在mysql>bin下执行: 例如: mysqldump -hrm-2ze8mpi5i65429l1qvo.mysql.rds.aliyunc ...

  6. Redis 禁用FLUSHALL FLUSHDB KEYS 命令

      (error) ERR unknown command 'keys'问题解决(error) ERR unknown command 'FLUSHDB' 问题解决 背景 FLUSHALL FLUSH ...

  7. Mvc校验用户没有登录就跳转的实现

    看字面意思很简单,就是判断用户是否登录了,如果没有登录就跳转到登陆页面. 没错,主要代码如下(这里就不写判断登录了,直接跳转) 首先在控制器中新建一个BaseController public cla ...

  8. LODOOP中的各种边距 打印项、整体偏移、可打区域、内部边距

    Lodop中的打印项内容位置定位,除了打印项本身的top,left值,也会受其他设定或打印机的影响.打印开发,先用虚拟打印机测试出正确结果,然后客户端用打印维护微调常见问题:1.设置打印项相对于纸张居 ...

  9. CSS3之box-sizing属性

    box-sizing本身有三个属性:content-box(默认).border-box和padding-box. content-box:border与padding均不算入width中: bord ...

  10. yolo算法解析