题目大意:A^B的所有约数和,mod 9901.

解题思路:

①整数唯一分解定理:

一个整数A一定能被分成:A=(P1^K1)*(P2^K2)*(P3^K3).....*(Pn^Kn)的形式。其中Pn为素数。

如2004=(22)*3*167。

那么2004x=(22x)*(3x)*(167x)。

②约数和公式

对于一个已经被分解的整数A=(P1^K1)*(P2^K2)*(P3^K3).....*(Pn^Kn),

有约数和S=(1+P12+P13+.....P1k1)*.....(1+Pn2+Pn3+.....Pnkn)。

(1+P12+P13+.....P1k1)是一个等比数列,化简为(P1k1+1 -1)/(P1-1),由于有除法同余式,很容易想到乘法逆元。

但是这题和HDU 1452不同,对于逆元表达式ax=1 mod n,乘法逆元存在的条件是gcd(a,n)=1,即a,n互质,但是这题的gcd(P1-1,9901)≠1, 所以不能用乘法逆元求解。

所以有必要对等比数列求和公式改一改:

(1)若n为奇数,一共有偶数项,则:

1 + p + p^2 + p^3 +...+ p^n

= (1+p^(n/2+1)) + p * (1+p^(n/2+1)) +...+ p^(n/2) * (1+p^(n/2+1))

=(1 + p + p^2 +...+ p^(n/2))* (1 + p^(n/2+1))

上式红色加粗的前半部分恰好就是原式的一半,后半部分递归求解即可。

(2)若n为偶数,一共有奇数项,则:

1 + p + p^2 + p^3 +...+ p^n

= (1+p^(n/2+1)) + p * (1+p^(n/2+1)) +...+ p^(n/2-1) * (1+p^(n/2+1)) + p^(n/2)

= (1 + p + p^2 +...+ p^(n/2-1))* (1+p^(n/2+1)) + p^(n/2);

这样,在对A质因数分解后,对于每一个质因数,累乘sum(质因数,次数)%mod即可,注意sum计算的时候都要mod防止溢出。

注意一下A的范围,A=0或A=1时无法分解质因数,所以特判结果分别是0和1。

#include "cstdio"

#include "map"

using namespace std;

#define LL long long

#define mod 9901

map prime_factor(LL n)

{

map res;

for(LL i=;i*i<=n;i++)

while(n%i==) {++res[i];n/=i;}

if(n!=) res[n]=;

return res;

}

LL pow(LL a,LL n)

{

LL base=a,ret=;

while(n)

{

if(n&) ret=(ret*base)%mod;

base=(base*base)%mod;

n>>=;

}

return ret%mod;

}

LL sum(LL p,LL n)

{

if(n==) return ;

if(n&) return ((+pow(p,(n>>)+))*sum(p,n>>))%mod;

else return ((+pow(p,(n>>)+))*sum(p,(n-)>>)+pow(p,n>>))%mod;

}

int main()

{

//freopen("in.txt","r",stdin);

LL a,b,res=;

scanf("%I64d%I64d",&a,&b);

if(a==) {printf("0\n");return ;}

map fac=prime_factor(a);

for(map::iterator i=fac.begin();i!=fac.end();i++)

{

LL tmp=sum(i->first,i->second*b)%mod;

res=(tmp*res)%mod;

}

printf("%I64d\n",res);

}

13625416

Accepted

148K

0MS

992B

2014-11-13 12:53:25

POJ 1845 Sumdiv 【二分 &vert;&vert; 逆元】

任意门:http://poj.org/problem?id=1845. Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions ...

【POJ1845】Sumdiv(数论&sol;约数和定理&sol;等比数列二分求和)

题目: POJ1845 分析: 首先用线性筛把\(A\)分解质因数,得到: \[A=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n} (p_i是质数且a_i>0) \] 则显然\ ...

poj 3233 Matrix Power Series 矩阵求和

http://poj.org/problem?id=3233 题解 矩阵快速幂+二分等比数列求和 AC代码 #include #include

【POJ 1845】 Sumdiv &lpar;整数唯分&plus;约数和公式&plus;二分等比数列前n项和&plus;同余&rpar;

[POJ 1845] Sumdiv 用的东西挺全 最主要通过这个题学了约数和公式跟二分求等比数列前n项和 另一种小优化的整数拆分  整数的唯一分解定理: 随意正整数都有且仅仅有一种方式写出其素因子的乘 ...

poj 1845 【数论:逆元,二分(乘法),拓展欧几里得,费马小定理】

POJ 1845 题意不说了,网上一大堆.此题做了一天,必须要整理一下了. 刚开始用费马小定理做,WA.(poj敢说我代码WA???)(以下代码其实都不严谨,按照数据要求A是可以等于0的,那么结果自然 ...

poj 1845 数论综合

题意:求A^B的所有因数的和 mod 9901 sol:一开始毫无思路,因为很多定理都不知道-_-|| 1. 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. A=(p1^ ...

POJ 1845 Sumdiv 【逆元】

题意:求A^B的所有因子之和 很容易知道,先把分解得到,那么得到,那么 的所有因子和的表达式如下 第一种做法是分治求等比数列的和  用递归二分求等比数列1+pi+pi^2+pi^3+...+pi^n: ...

POJ 1845 Sumdiv (求某个数的所有正因子的和)

题意: 求A^B的所有正因子的和,最后模9901的结果. 思路: 若对一个数n进行素数分解,n=p1^a1*p2^a2*p3^a3*...*pk^ak那么n的所有正因子之和sum=(1+p1+...+ ...

poj 1845 POJ 1845 Sumdiv 数学模板

筛选法+求一个整数的分解+快速模幂运算+递归求计算1+p+p^2+````+p^nPOJ 1845 Sumdiv求A^B的所有约数之和%9901 */#include#i ...

随机推荐

Util应用程序框架公共操作类&lpar;十二&rpar;&colon;Lambda表达式公共操作类&lpar;三&rpar;

今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// ...

【转】HTTP中的长连接和短连接分析

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

前端框架Bootstrap的Modal使用Ajax数据源&comma;如何避免数据被缓存

1.绑定事件,在关闭的时候,直接将数据清除: $("#model").on("hidden.bs.model",function(e){$(this).remo ...

PHP获取真实的网络IP

function get_client_ip() { $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_CLIENT_IP']) &amp ...

String字符串的操作

字符串的常用操作 # Author:nadech name = "my name is nadech" print(name.count("a")) print ...

Model类代码生成器

using Humanizer; using System; using System.Collections.Generic; using System.Data; using System.Dat ...

ES6对抽象工厂模式与策略模式结合的实践

这段代码是我在学习了java版的抽象工厂模式后,实现的ES6版抽象工厂,后期大幅修改,加入了策略模式,看起来很多逻辑看似繁琐,不必要写这么多,但是为了练习设计模式,所以才这样做.当所需的工厂种类增多后 ...

Ansible test

[root@localmesos ansible_test]# ansible all -a "/bin/echo hello"192.168.111.111 | SUCCESS ...

python软件依赖关系

caffe:numpy,scikit-image opencv:numpy

HttpClient传递Cookie

使用代码访问http资源,我们通常用WebRequest,当然,HttpClient提供了更方便的封装,我用得更多.只是碰到一些需要(cookie)鉴权的情况,需要把cookie伴随请求一起发到服务器 ...

Linux等比数列脚本求和,POJ 1845 (约数和+二分等比数列求和)相关推荐

  1. 【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)

    [POJ 1845] Sumdiv 用的东西挺全 最主要通过这个题学了约数和公式跟二分求等比数列前n项和 另一种小优化的整数拆分  整数的唯一分解定理: 随意正整数都有且仅仅有一种方式写出其素因子的乘 ...

  2. Linux编写脚本nsum求和,详解Linux Shell脚本编写技巧,附实例说明

    原标题:详解Linux Shell脚本编写技巧,附实例说明 Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法很都掌握,但有需求时,很难直接上手编程,要么写了很久,要么写不好!对 ...

  3. POJ 1845 逆元 / 分治

    题意 传送门 POJ 1845 题解 分解质因数 A=p1e1p2e2-pnenA=p_1^{e_1}p_2^{e_2}\dots p_n^{e_n}A=p1e1​​p2e2​​-pnen​​,则约数 ...

  4. Sumdiv POJ - 1845

    Sumdiv POJ - 1845 题意: 求ABA^BAB的所有约数之和mod 9901(1<=A,B<=5e7) 题解: 我们先将A分解质因子,表示为:p1c1∗p2c2∗...... ...

  5. 【简●解】POJ 1845 【Sumdiv】

    POJ 1845 [Sumdiv] [题目大意] 给定\(A\)和\(B\),求\(A^B\)的所有约数之和,对\(9901\)取模. (对于全部数据,\(0<= A <= B <= ...

  6. Linux shell脚本编程(二)

    Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...

  7. 面向dba的linux shell 脚本简介,面向 DBA 的 Linux Shell 脚本简介

    DBA:Linux 面向 DBA 的 Linux Shell 脚本简介 作者:CasimirSaternos 学习一些在 Linux 上安装.运行和维护 Oracle 数据库所需的基本 bash sh ...

  8. linux脚本简介,Linux Shell脚本简介

    Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...

  9. POJ 1845 【数论】

    题目链接:POJ 1845 题意 求ababa^b的所有约数之和,最终结果对9901求模 需要知识 1.快速幂:二分法求nmnmn^m的结果 2.因数分解:遍历求出所有因数 3.约数和定理:假设n=p ...

最新文章

  1. 如何同时启动多个Tomcat服务器
  2. C++模拟键盘操作窗口入门
  3. lcd液晶字体_等离子电视与液晶电视的区别
  4. Centos6.5硬盘故障修复
  5. js中解析json字符串
  6. 耳挂式蓝牙耳机原理_耳挂式蓝牙耳机项目总结分析报告
  7. 【计算机网络】湖科大微课堂 笔记目录(完结)
  8. Code For Better 谷歌开发者之声——谷歌Web工具包(GWT)
  9. 【转载】蜗牛星际矿渣黑群晖安装折腾路以及指引
  10. VS2013 TeeChart_v8 MFC C++ 使用手册干货(一)TeeChart ColorGrid类的简单使用
  11. linux下raid(md)驱动源码解析
  12. 同济高数第七版上册54页例1详细证明过程
  13. 使用ManagedWifi连接无线网络
  14. 机房重构一路走来——初步总结
  15. centOS 7下无法启动网卡(systemctl start network)错误解决办法
  16. JavaWeb开发日记
  17. WebView的白屏检测与处理
  18. Guava Predicate 用法整理
  19. jdk,jre下载安装
  20. 使用了未经检查或不安全的操作_木工镂铣刀具的使用操作安全要点

热门文章

  1. 现代c++白皮书(背景)
  2. 北京通信展的精华,都在这里!(上)
  3. MacBook设置中国时区时间
  4. 软件测试新标准ISO29119的是是非非
  5. 防晒隔离产品基础知识大全
  6. 出门问问又出音箱了,除了造型大变样,「工作地点」开始从家里转移到你的裤兜里
  7. 巨变的中国与数字化转型,创造了中国企业技术出海的历史机遇
  8. uniapp 常用生命周期以及执行顺序
  9. 华为手机配什么蓝牙耳机好?适合华为手机的蓝牙耳机推荐
  10. 这次终于理解了PCA主成分分析(附代码)