题目地址

看到这题的题解,大佬都说是小学奥数,蔡得我不敢鸡声

求 \(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(约数和问题)的更多相关文章

  1. poj 1845 Sumdiv 约数和定理

    Sumdiv 题目连接: http://poj.org/problem?id=1845 Description Consider two natural numbers A and B. Let S ...

  2. Sumdiv(快速幂+约数和)

    Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16244 Accepted: 4044 Description C ...

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

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

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

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

  5. poj 1845 Sumdiv(约数和,乘法逆元)

    题目: 求AB的正约数之和. 输入: A,B(0<=A,B<=5*107) 输出: 一个整数,AB的正约数之和 mod 9901. 思路: 根据正整数唯一分解定理,若一个正整数表示为:A= ...

  6. 【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)

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

  7. 约数之和(POJ1845 Sumdiv)

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

  8. Sumdiv 等比数列求和

    Sumdiv Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15364   Accepted: 3790 De ...

  9. poj 1845 POJ 1845 Sumdiv 数学模板

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

随机推荐

  1. jquery attr()方法获取input的checked属性问题

    问题:经常使用jQuery插件的attr方法获取checked属性值,获取的值的大小为未定义,此时可以用prop方法获取其真实值,下面介绍这两种方法的区别: 1.通过prop方法获取checked属性 ...

  2. 后端PHP框架laravel学习踩的各种坑

    安装完laravel的ventor目录后出现“Whoops, looks like something went wrong.”这样的错误信息 打开config/app.php,打开debug为tru ...

  3. onload in JavaScript

    https://www.w3schools.com/tags/ev_onload.asp Example Execute a JavaScript immediately after a page h ...

  4. CMAK找不到相关编译器的问题

    本机安装了vs2019,在编译vulkansdk所带的samples时,遇到 错误提示: CMake Error at CMakeLists.txt: (project): Generator Vis ...

  5. native-echarts 组件封装

    CommunalChart.js /** * 封装 图表组件 */ import React, { Component } from 'react'; import { StyleSheet, Tex ...

  6. 《图解设计模式》读书笔记7-1 facade模式

    目录 1. Facade模式简介 2. 示例程序 2.1 类图 2.2 程序 3.角色和类图 4.思路拓展 1. Facade模式简介 开发程序的过程中,随着时间的推移,类会越来越多,调用关系会越来越 ...

  7. AWK之随心所欲-高手篇

    1.内置变量 变量名 描述 FS 输入字段分隔符,默认是空格或制表符 OFS 输出字段分隔符,默认是空格 RS 输入记录分隔符,默认是换行符\n ORS 输出记录分隔符,默认是换行符\n NF 统计当 ...

  8. 查看linux显卡序列

    1 lspci -vnn | grep VGA -A 12会输出显卡的硬件信息,第一行的第二个[]内是显卡的序列号2 在网站http://pci-ids.ucw.cz/read/PC/ 下方输入序列号 ...

  9. Tensorflow | 基本函数介绍 简单详细的教程。 有用, 很棒

     http://blog.csdn.net/xxzhangx/article/details/54606040 Tensorflow | 基本函数介绍 2017-01-18 23:04 1404人阅读 ...

  10. JSONPath解析json

    JSONPath - 用于JSON的XPath 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具. 考虑到接下来计划开发一个自动化测试平台,在 ...