Sumdiv(约数和问题)
题目地址
看到这题的题解,大佬都说是小学奥数,蔡得我不敢鸡声。
求 \(a^b\) 所有的约数之和 mod \(9901\) \((1<=a,b<=5*10^7)\)
题解
做这道题,我还赶紧去看了一下 唯一分解定理
我们先把 \(a\) 分解质因数
\[a=p_1^{c_1}*p_2^{c_2}*...*p_n^{c_n}\]
比如说 \(12\) 可以分成 \(2^2+3^1\) 啦
因为 同指数幂相乘,指数不变,底数相乘 ,所以就有:
\[a^b=p_1^{c_1*b}*p_2^{c_2*b}*...*p_n^{c_n*b}\]
根据 唯一分解定理,\(a^b\) 的约数和就是
\[(1+p_1+p_1^2+...+p_1^{c_1*b})*(1+p_2+p_2^2+...+p_2^{c_2*b})*...*(1+p_3+p_3^2+...+p_3^{c_3*b})\]
大佬看出了是等比数列,而我这个蒟蒻没有看出来
因为等比数列的求和公式要用除法,除法不满足 \(\text{mod}\) 的分配律
所以我们就迎来了这个题目的重点——分治
设 \(\text{sum}(p,c)\),为 \((1+p+p^2+...+p^{c})\)
- 若 \(c\) 为奇数,则有
\[\text{sum}(p,c)=(1+p+...+p^{\frac{c-1}{2}})+(p^{\frac{c+1}{2}}+...+p^c)\]
\[=1*(1+p+...+p^{\frac{c-1}{2}})+\frac{c+1}{2}*(1+p+...+p^{\frac{c-1}{2}})\]
\[=(1+\frac{c+1}{2})*\text{sum}(p,\frac{c-1}{2})\]
- 若 \(c\) 为偶数数,类似的有
\[\text{sum}(p,c)=(1+\frac{p}{2})*\text{sum}(p,\frac{p}{2}-1)*p^c\]
结合快速幂,时间复杂度上可以过得去
讲了这么多(虽然是看书),我忘了告诉你这个题目我是口胡的。
Sumdiv(约数和问题)的更多相关文章
- poj 1845 Sumdiv 约数和定理
Sumdiv 题目连接: http://poj.org/problem?id=1845 Description Consider two natural numbers A and B. Let S ...
- Sumdiv(快速幂+约数和)
Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16244 Accepted: 4044 Description C ...
- 【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)
[POJ 1845] Sumdiv 用的东西挺全 最主要通过这个题学了约数和公式跟二分求等比数列前n项和 另一种小优化的整数拆分 整数的唯一分解定理: 随意正整数都有且仅仅有一种方式写出其素因子的乘 ...
- 【题解】POJ1845 Sumdiv(乘法逆元+约数和)
POJ1845:http://poj.org/problem?id=1845 思路: AB可以表示成多个质数的幂相乘的形式:AB=(a1n1)*(a2n2)* ...*(amnm) 根据算数基本定理可 ...
- poj 1845 Sumdiv(约数和,乘法逆元)
题目: 求AB的正约数之和. 输入: A,B(0<=A,B<=5*107) 输出: 一个整数,AB的正约数之和 mod 9901. 思路: 根据正整数唯一分解定理,若一个正整数表示为:A= ...
- 【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
题目: POJ1845 分析: 首先用线性筛把\(A\)分解质因数,得到: \[A=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n} (p_i是质数且a_i>0) \] 则显然\ ...
- 约数之和(POJ1845 Sumdiv)
最近应老延的要求再刷<算法进阶指南>(不得不说这本书不错)...这道题花费了较长时间~(当然也因为我太弱了)所以就写个比较易懂的题解啦~ 原题链接:POJ1845 翻译版题目(其实是AcW ...
- Sumdiv 等比数列求和
Sumdiv Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15364 Accepted: 3790 De ...
- poj 1845 POJ 1845 Sumdiv 数学模板
筛选法+求一个整数的分解+快速模幂运算+递归求计算1+p+p^2+````+p^nPOJ 1845 Sumdiv求A^B的所有约数之和%9901 */#include<stdio.h>#i ...
随机推荐
- 前端学习之路之SPA(单页应用)设计原理
SPA设计 1.设计意义 前后端分离 减轻服务器压力 增强用户体验 Prerender预渲染优化SEO 前后端分离:前端做业务逻辑,后端处理数据和接口,耦合度减少,开发效率提高. 减轻服务器压力:一个 ...
- Linux shell -查找字符(find,xargs,grep)
在当前目录下查找含有jmxremote字符的文件 test@>find . -type f|xargs grep "jmxremote" . 当前目录 -type 查找文件类 ...
- selinux 关闭
查看SELinux状态: 1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_2_BufferedOutputStream_字节缓冲
子类 继承父类,这些方法都可以使用 必须写上flush,刷新数据数据才能写入到文件内
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_2_哈希值
没有重写就是十进制的整数,重写了想返回多少就是多少. 创建Person类,没有写继承关系,默认会继承Object类 打开Object这个类 找到HashCode这个方法.就这一行代码.甚至都没有方法体 ...
- 操作Redis--hash/key-value
redis也是一个数据库,它的存储以key-value的方式存放,比如: a.关系型数据库 比如: mysql.oracle.sql server.db2.sqlite数据库,为关系型数据库 数据通过 ...
- 用python进行月份加减的函数
import math def add_month(datamonth, num): """ 月份加减函数,返回字符串类型 :param datamonth: 时间(20 ...
- 1.k8s.资源清单
#k8s常用资源 工作负载:Pod,rs(ReplicasSet),deploy(Deployment),sts(StatefulSet),ds(DaemonSet),Job,Cronjob 服务发现 ...
- SpringBoot整合Lintener
1.通过扫描完成Lintener组件的注册 1.1编写Listener /** * springboot整合Lintener 方式一 * 在web.xml中如何配置Listener * <lis ...
- nvm-windows编译源码 go遇到的问题
异常: Microsoft Windows [Version 10.0.17134.1006] (c) Microsoft Corporation. All rights reserved. C:\U ...