约数之和(分治,公式变形)
题目链接
AcWing 97.
本题有两种方法,公式法与求逆元,这里使用逆元求等比数列的和
注意逆元不存在的情况(代码中有标注)
/*1.分治法2.同余逆元对于(a/b)%MOD 逆元不存在:等价于b % MOD = 0
*/#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int MOD = 9901;
int p[50000010],cnt[50000010];
int total;ll quick_mod(ll a,ll b,ll p){ll res = 1;while(b){if(b&1) res = res * a % p;b >>= 1;a = a * a % p;}return res % p;
}ll getInv(ll b){return quick_mod(b,MOD-2,MOD);
}void get(ll n){for(ll i=2;i*i<=n;i++){if(n%i==0){p[++total] = i;while(n%i==0){cnt[i]++;n /= i;}}}if(n>1){p[++total] = n;cnt[n]++;}return;
}int main()
{ll a,b;cin >> a >> b;if(a==0){cout << "0\n";return 0;}get(a);ll s = 1;// 注意处理不存在逆元的情况.for(int i=1;i<=total;i++){/*如果逆元不存在,即 (p-1)%MOD = 0 --> p % MOD = 1即等比数列每一项 %MOD 均等于1*/if(p[i]%MOD==1){s = (s * (b*cnt[p[i]]+1)) % MOD;continue;}ll inv = getInv(p[i]-1);ll fz = quick_mod((ll)p[i],b*cnt[p[i]]+1,MOD);fz = (fz - 1 + MOD) % MOD; // 注意处理负数的情况.ll m = (fz * inv) % MOD;s = s * m % MOD;}cout << s << endl;return 0;
}
约数之和(分治,公式变形)相关推荐
- 【ACWing】97. 约数之和
题目地址: https://www.acwing.com/problem/content/99/ 假设现在有两个自然数 a a a和 a a a, s s s是 a b a^b ab的所有约数之和.请 ...
- hdu1852 Beijing 2008(约数之和 : 无逆元除法取模 | 等比数列分治求和)
题意: 给你n,k,M=2008n%k,求2008M%k给你n,k,M = 2008^{n}\%k,求2008^{M}\%k给你n,k,M=2008n%k,求2008M%k 思路: 唯一分解定理分解质 ...
- POJ1845(约数之和)
自闭的人的题解 POJ1845 约数之和 题目描述: 给你两个整数A.B,让你求出a^b中所有的约数的和膜上9901的值. 输入 : 两个正整数A,B 输出 : 一个正整数表示答案 样例: IN :2 ...
- AcWing_97 约数之和
约数之和 链接 AcWing_97 约数之和 题目描述 假设现在有两个自然数 A A A 和 B B B, S S S 是 A B A^B AB 的所有约数之和. 请你求出 S m o d 9901 ...
- 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)
文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...
- 质因数 求约数 c语言,【初等数论】 求一个数有多少约数及所有约数之和、分解质因数...
今天做题遇见,于是就搜了一下,于是就有了这篇文章.(其实我不知道原理....Orz)我觉得分解质因数的最优算法应该不是我这篇文章中的这个.....谁有好的算法可以给我说一下,谢谢. 1.有多少个约数: ...
- lightoj 1098 A New Function 约数之和(一道奇怪的数论) 整除分块优化
文章目录 题目如下: 思考人生: 题目如下: lightoj 1098 A New Function 求1-n所有数的所有约数之和(不包括1和它本身).n<=2e9. 思考人生: 首先考虑打表找 ...
- 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?
一.试除法求约数 主要思想:由于当n/a=b时,a和b都是n的约数,即约数总是成对出现,可以在一次循环中同时找到i和n/i两个约数,只需要循环n/i次就能找到所有约数. 例题:求一个数的所有约数,并将 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 97. 约数之和:递归、快速幂
文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 快速幂参考笔者的这篇博文: 算法刷题-数论-组合数.快速幂.逆元.递推求组合数.逆元求组合数 约数之和参考笔者的这篇博文: 算法刷题 ...
- 51NOD 1220 约数之和(杜教筛)
1220 约数之和 推式子 ∑i=1n∑j=1nd(i,j)=∑i=1n∑j=1n∑x∣i∑y∣j(gcd(x,y)=1)xjy=∑d=1ndμ(d)∑i=1nd∑x∣iix∑j=1nd∑y∣jj=∑ ...
最新文章
- C++控制台没有引用的头文件也会编译的原因
- 作业收缴系统设计手册(自写开源小系统)
- vue2.0+stylus实现星级评定组件,computed计算属性实现全星半星,动态改变星级,多种星星规格
- 有线电视的现状与发展,全国一网与广电5G一体化建设
- Mysql ---Sqlserver数据迁移到Mysql(Mysql建表迁移数据)
- MetricBeat(win/linux)部署 系统CPU内存等资源情况监控
- Makefile工程管理语法与使用技巧
- 【笔试面试题】腾讯2013实习生面试算法题及参考答案
- 树莓派入门教程 - 0 - 准备篇 - 0.4 树莓派安装FTP服务器
- 开发人员在编写 HTML 和 CSS 时最常犯的六大错误
- java 调用 c# webservice 压缩 Liststring示例
- NVIDIA cuDNN 下载
- 一行 Python 代码,20款经典小游戏
- 米思齐(Mixly)图形化系列教程(四)-运算符
- ENSP模拟实验OSPF NSSA区域
- 埃隆·马斯克(Elon Musk)
- discuz php单页,Discuz! X2 自定义单页面最简单方法
- PHP限制字符串显示长度
- 系统性简述蓝牙以及ESP32对BLE蓝牙的使用(一)
- lk:littlekernel-概述