POJ 1845 质因数分解+等比数列求和

【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和) 题目: POJ1845 分析: 首先用线性筛把AAA分解质因数,得到: A=pa11∗pa22...∗pann(pi是质数且ai>0)A=p1a1∗p2a2...∗pnan(pi是质数且ai>0)A=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n} (p_i是质数且a_i>0) 则显然ABABA^B分解质因数后为 A=pa1B1∗pa2B2...∗... 阅读详情

题意:给出A,B,求A^B的所有约数之和

思路:首先给A分解质因数,若A = C1 ^ e1 * ... * Cn ^ en,则A ^ B = C1 ^ (e1 * B) * ... * Cn ^ (en * B),

           容易知道,其所有约数之和为:

           Ans = [C1 ^ 0 + C1 ^ 1 + ... + C1 ^ (e1 * B)] * [C2 ^ 0  + ... + C2 ^ (e2 * B)] * ... * [Cn ^ 0 + ... + Cn ^ (en * B)]

           每一个因式都是一个等比数列,二分即可

代码:

#include <cstdio>

const int Mod = 9901;
typedef long long LL;

LL Powmod(LL x, LL exp){
	LL s = 1;
	while(exp){
		if(exp & 1)s = s * x % Mod;
		x = x * x % Mod;
		exp >>= 1;
	}
	return s;
}

LL c[Mod], e[Mod], cnt, A, B;

void GetFacts(LL n){
	for(LL i = 2;i * i <= n;i ++)
		if(n % i == 0){
			n /= i, c[++cnt] = i, e[cnt] = 1;
			while(n % i == 0) n /= i, e[cnt] ++;
		}
	if(n > 1)c[++cnt] = n, e[cnt] = 1;
}

LL solve(LL x, LL exp){
	if(!exp)return 1;
	LL s = solve(x, (exp - 1) >> 1) * (1 + Powmod(x, (exp + 1) >> 1)) % Mod;
	if(exp % 2 == 0) s = (s + Powmod(x, exp)) % Mod;
	return s;
}

int main(){
	scanf("%lld%lld", &A, &B);
	if(!A){
		puts("0");return 0;
	}
	GetFacts(A);
	LL Ans = 1;
	for(int i = 1;i <= cnt; i++)
		Ans = Ans * solve(c[i], e[i] * B) % Mod;
	printf("%lld\n", Ans);
	return 0;
}




POJ 1845 Sumdiv 保姆级题解:用C++手撕整数分解与等比数列求和(附完整可运行代码) 本文提供POJ 1845 Sumdiv题的保姆级C++题解,详细讲解如何利用整数唯一分解定理和快速幂算法高效计算大数因子和。通过分治法求等比数列和,结合完整可运行代码,帮助读者掌握数论问题的核心解决思路与实现技巧。 阅读详情

相关推荐

算法竞赛中的数学武器:如何用‘整数分解+分治求等比和’通解POJ 1845这类因子和问题

本文深入解析了算法竞赛中POJ 1845 Sumdiv这类因子和问题的通用解法,结合整数唯一分解定理和分治法求等比数列和,提供高效C++实现方案。通过质因数分解和分治策略,将O(n)复杂度优化至O(log n),适用于大指数模运算场景,是竞赛选手必备的数学武器。

weixin_30835649的博客 654

Poj 1845 (唯一分解定理+快速幂+逆元)

链接:https://vjudge.net/problem/POJ-1845 题意:给定2个自然数a,b,求a^b的所有约数的和 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #define mod 99...

dukig的博客 275

分辨率太小 / Retina 模糊 / 全屏异常:一篇解决 VMware Fusion + Kali 显示问题(Xfce & GNOME 通用)

本文提供了在Mac(尤其是Retina屏)上运行Kali Linux时常见显示问题的完整解决方案。主要解决三类问题:分辨率太小、Retina屏模糊和全屏异常。核心思路是先安装open-vm-tools-desktop并重启,这是90%问题的根源。然后根据不同问题分别处理:调整DPI/Scale解决字体大小,避免双重缩放导致的模糊,以及通过窗口拉伸和重启解决全屏异常。文章还给出了针对Xfce和GNOME的最佳配置建议,并强调调试完成后应创建快照以便快速恢复。最后提供了速查表,方便用户快速参考关键步骤。

致力于分享在各类技术领域的学习与实践经验,涵盖编程、虚拟化、开源工具、网络安全等。 873

poj——1845(数论之因子的和)

题目地址:http://poj.org/problem?id=1845 感受:尼玛,0的正整数次方mod9901的结果竟然是1,严重毁三观加坑啊。 解析:就是用等比数列公式加上逆元做的。注如果(p-1)是9901的倍数的话,就直接乘以(count*k+1)个1便可以。(可证明的)。 #include #include #include #include #include #incl

luoshenzhisi 798

绝缘检测原理和绝缘电阻计算方法

绝缘检测的目的就是计算绝缘电阻,当绝缘电阻低于某个阈值,则很可能会造成电池短路、漏电,威胁人员安全

m0_56208280的博客 4万+

给MATLAB安装runtime插件

输入你刚刚下载压缩包的位置(小白提示:在 此电脑 中找到压缩包位置,右键属性复制位置)(!设置好以后然后填写下面输出exe文件的信息,包括文件的名字、作者、Email、公司、概述、描述,下面还可以选择额外的安装选项,exe文件运行需要的其他文件(图像、子程序等)、提供给用户的文件(readme.txt等)(很多方法是官网下载,但在官网下载还是会版本不对应,所以直接在你所用的MATLAB里搜索安装链接最靠谱)(!5.可以打包程序了(你发送文件的人电脑里没有MATLAB也可以查看运行你的程序了)

Pei_hua100的专栏 1万+

POJ-1845-Sumdiv

拜队友数学帝指导~用令我无比惊奇的方法去做出来了。 其就是数学分解,然后进行暴出循环~ 代码: #include #include #include #include using namespace std; const int mod=9901; struct node { bool vis; int pos; }vis[100000]; long long a,b,num

z309241990的专栏 586

Open3D:Win10 + VS2017配置Open3D(C++、python)

一、下载源码 地址:https://github.com/intel-isl/Open3D 1.1 克隆源码【笔者的源码路径为D:\Open3D\Open3D】 1.2 切换版本【笔者的版本为0.8.0】 1.3 更新子模块【用于获取第三方库!很重要!】 二、CMake编译 2.1 设置路径 【source code: D:\Open3D\Open3D;build binaries: D:\Open3D】 【笔者设置CMAKE/CMAKE_INSTALL_PREFIX的路径为D:/Open.

累了就要打游戏 1万+

POJ1845-Sumdiv

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出。 解题思路: 要求有较强...

ζёСяêτ - 小優YoU 9268

保姆级教程:STM32CubeMX配置PWM死区与刹车功能,防止电机驱动炸管

本文详细解析了使用STM32CubeMX配置PWM死区与刹车功能的完整流程,帮助工程师避免电机驱动中的炸管风险。通过深入讲解死区时间计算公式、CubeMX配置界面及刹车功能的安全机制,结合实际电路设计要点和调试技巧,为电机驱动和电源转换应用提供可靠解决方案。

weixin_42550597的博客 344

基于Claude Code的 规范驱动开发(SDD)指南

传统的AI辅助开发,如同手工作坊,我们向AI描述想法,它给我们零散的部件,我们再手动打磨、组装。这个过程充满了不确定性、信息损耗和重复劳动。本指南将尝试引领您进入软件开发的“工业时代”。在这里,

形上得其象,形下合于数;阴阳自济,玄理自明。 2747

POJ1845 因式分解短除法,快速幂取余,等比队列求和递归方法

因式分解短除法,快速幂取余,等比队列求和递归方法

wde123789456的博客 357

RK3588,V4l2 读取Gmsl相机, Rga yuv422转换rgb (dma), 实现零拷贝

RK3588, 使用V4l2 读取 gmsl 相机,获得yuv422格式图像, 使用 rga 转换 rgb 图像。减少cpu占用率. 内存管理方式采用 dma,实现零拷贝.

J。 1262

poj1845 质因数分解+等比数列求和

题意:求A^B约数之和。 分析:首先可以讲A分解质因数: A=p1^a1+p2^a2+p3^a3+……+pn^an 则A^B=p1^(a1*B)+p2^(a2*B)……+pn^(an*B) A^B的所有约数之和sum=[1+p1+p1^2+…+p1^(a1*B)][1+p2+p2^2+…+p2^(a2*B)][1+pn+pn^2+…+pn^(an*B)]. 之后就是用二分的

Plume 羽 <。) 620

【YOLO多模态检测顶刊】TGRS 2025范文解读,RGFNet 可见光-红外图像融合目标检测,2026年基于YOLO多模态融合属于发文热点,小论文和大论文通用,通读顶刊了解做实验和论文写作的全流程

🔥本文提出了一种反射率引导的渐进特征对齐网络(RGFNet)用于全天候无人机目标检测。该方法利用Retinex理论从可见光图像中提取光照不变的反射率特征,设计了反射率引导协同对齐模块(RCAM)实现跨模态双向特征对齐,并通过光照感知选择性融合模块(LSFM)在共享状态空间中进行高效特征交互。在DroneVehicle和DVTOD数据集上的实验表明,RGFNet分别达到81.4%和88.5%的mAP,显著优于现有方法。该方法有效解决了低光照条件下可见光-红外图像特征错位问题,为全天候无人机检测提供了新思路。

Ai缝合怪、助力小伙伴高效发论文 1076

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ 1845 Sumdiv

题目链接:http://poj.org/problem?id=1845 题意:给出A,B两个整数(0 Sample Input 2 3 Sample Output 15 Hint 2^3 = 8. The natural divisors of 8 are: 1,2,4,8. Their sum is 15. 15 modulo 9901 is 15 (that should be

Fistice的博客 324

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

POJ1845(约数之和)

自闭的人的题解 POJ1845 约数之和 题目描述: 给你两个整数A、B,让你求出a^b中所有的约数的和膜上9901的值。 输入 : 两个正整数A,B 输出 : 一个正整数表示答案 样例: IN :2 3 OUT : 15 这道题,我一开始其实是只有暴力的思路的。 但是,又重新去思考一下,因为求的是所有约数的和,所以我们就可以将A分解质因数 \[ A=p_{1}^{c_{1}} * p...

weixin_30545285的博客 285

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

输入a,b,求a^b的所有因子之和

题目 poj的1845 分解a的质因数a=p1^t1*p2^t1........ 每个质因数对sum的贡献: 当除去质因数p1时的因数和为sum,当计入p1时,因子和变成sum*p1^0+sum*p1^1+sum*p1^2......+sum*p1^t1 也就是所有的sum=【1+p1+p1^2+p1^3+...+p1^t1】*【p2.....】【p3...】 然后由于是a^b,所以最...

weixin_30411997的博客 323

Sumdiv POJ - 1845(分解质因数+小学奥数题+快速幂+等比数列求和递归公式推导)

题意:传送门 题解:要算ABA^BAB的所有约数之和%9901\%9901%9901,首先可以对AAA进行质因数分解A=p1k1∗p2k2∗⋯∗pnknA=p_1^{k_1}*p_2^{k_2}*\cdots*p_n^{k_n}A=p1k1​​∗p2k2​​∗⋯∗pnkn​​约数之和的取法有多少种呢?num=(k1+1)∗(k2+1)∗⋯∗(kn+1)num=(k_1+1)*(k_2+1)*\cd...

肘子的博客 571

poj 1845 Sumdiv

题目链接:http://poj.org/problem?id=1845 题目大意:就是求A^B的因子和。。。。。 思路: 1、对任意的n,可以这么表示 n=p1^e1*p2^e2*p3*e3*......pn^en 。(p1,p2,p3......pn都为素数)      2、对任意的n的因子和为:(1+e1+e1^2+......+e1^p1)*(1+e2+e2^2+......

u010304217的专栏 937

POJ - 1845 Sumdiv (质因数分解+快速幂+等比数列快速求和)

Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901). Input The only line contains the two natural ...

aero1009的博客 281

Sumdiv(快速幂 + 约数和)

Sumdiv [Link](1845 – Sumdiv (poj.org)) 题意 给你a,b,问你aba^bab的所有的约数之和模9901之后是多少。 题解 首先根据唯一分解定理:任何一个自然数都可以被拆成一系列质数因子的乘积,就是ab=p1a1∗p2a2...∗pnana^b=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n}ab=p1a1​​∗p2a2​​...∗pnan​​。aba^bab的每一个质因子有[0,ai][0, a_i][0,ai​]种取法,每一个质因子的每一种取法的组合,

a12377978的博客 432

POJ 1845 Sumdiv保姆级题解:用C++手撕整数分解与等比数列求和(附完整避坑代码)

本文深入解析POJ 1845 Sumdiv问题,从整数唯一分解定理和分治法入手,详细讲解如何用C++实现质因数分解与等比数列求和。通过完整的代码示例和避坑指南,帮助读者掌握数论算法在实际编程中的应用,特别适合算法竞赛选手和C++开发者学习参考。

weixin_30932215的博客 131
上一篇: POJ 3612 DP
下一篇: POJ 3904 容斥原理
dy0607
博客等级 码龄12年 16粉丝 38原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值