【Luogu】P1593因子和(唯一分解定理,约数和公式)
首先介绍两个定理。
整数唯一分解定理:任意正整数都有且只有一种方式写出素数因子的乘积表达式。
\(A=(p1k1 p2k2 ...... pnkn \)
求这些因子的代码如下
for(int i=;i*i<=a;++i){
if(!(a%i)){
prime[++num]=i;
while(!(a%i)){
a/=i;
sum[num]++;
}
}
}
if(a!=){
prime[++num]=a;
sum[num]=;
}
唯一分解定理
约数和公式:对于已经分解的整数A,有A的所有因子和为
\( S= (1+p1+p12+p13+......+p1k1) (1+p2+p22+p23+......+p2k2)........(1+pn+pn2+pn3+......+pnkn) \)
所以局势明朗。用快速幂求出p的k*b次方,然后递归求和。代码如下
long long Sum(long long p,long long n){
if(n==) return ;
if(n&) return (Sum(p,n>>)*(+Pow(p,(n>>)+)))%mod;
return (Sum(p,(n>>)-)*(+Pow(p,(n>>)+))+Pow(p,n>>))%mod;
}
解题代码如下
#include<cstdio>
#include<cctype>
#define mod 9901
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int prime[];
int sum[];
int num; long long Pow(long long n,long long i){
if(i==) return ;
if(i==) return n%mod;
long long ret=Pow(n,i>>);
if(i&) return (((ret*ret)%mod)*n)%mod;
return (ret*ret)%mod;
} long long Sum(long long p,long long n){
if(n==) return ;
if(n&) return (Sum(p,n>>)*(+Pow(p,(n>>)+)))%mod;
return (Sum(p,(n>>)-)*(+Pow(p,(n>>)+))+Pow(p,n>>))%mod;
} int main(){
long long a=read(),b=read();
for(int i=;i*i<=a;++i){
if(!(a%i)){
prime[++num]=i;
while(!(a%i)){
a/=i;
sum[num]++;
}
}
}
if(a!=){
prime[++num]=a;
sum[num]=;
}
int ans=;
for(int i=;i<=num;++i)
ans=(ans*Sum(prime[i],sum[i]*b)%mod)%mod;
printf("%d",ans);
return ;
}
【Luogu】P1593因子和(唯一分解定理,约数和公式)的更多相关文章
- POJ 1845-Sumdiv(快速幂取模+整数唯一分解定理+约数和公式+同余模公式)
Sumdiv Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDU-1492-The number of divisors(约数) about Humble Numbers -求因子总数+唯一分解定理的变形
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- UVA294DIvisors(唯一分解定理+约数个数)
题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...
- POJ1845Sumdiv(求所有因子和 + 唯一分解定理)
Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 17387 Accepted: 4374 Descripti ...
- 2018.09.28 牛客网contest/197/A因子(唯一分解定理)
传送门 比赛的时候由于变量名打错了调了很久啊. 这道题显然是唯一分解定理的应用. 我们令P=a1p1∗a2p2∗...∗akpkP=a_1^{p_1}*a_2^{p_2}*...*a_k^{p_k}P ...
- 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...
- HDU-1215 七夕节 数论 唯一分解定理 求约数之和
题目链接:https://cn.vjudge.net/problem/HDU-1215 题意 中文题,自己去看吧,懒得写:) 思路 \[ Ans=\prod \sum p_i^j \] 唯一分解定理 ...
- hdu 1215 求约数和 唯一分解定理的基本运用
http://acm.hdu.edu.cn/showproblem.php?pid=1215 题意:求解小于n的所有因子和 利用数论的唯一分解定理. 若n = p1^e1 * p2^e2 * ……*p ...
- Divisors (求解组合数因子个数)【唯一分解定理】
Divisors 题目链接(点击) Your task in this problem is to determine the number of divisors of Cnk. Just for ...
随机推荐
- iOS:让UIView覆盖导航栏
当我们想做一个弹出式菜单时,想将导航栏也一起盖住不显示的话,可以用如下语句实现: UIView* myView = /* 你自定义的view */; UIWindow* currentWindow = ...
- LR中订单流程脚本2
Action(){ //1.设置服务器的IP地址 //lr_save_string("192.168.1.12:8080", "ip"); lr_save_st ...
- MySQL出现GROUP BY clause错误解决办法
#1)当mysql数据库出现如下错误:#which is not functionally dependent on columns in GROUP BY clause; this is incom ...
- java代码(生成long类型数字)
package test; public class GenerateNum { public static void main(String[] args) { //定义为long类型,需在数值后面 ...
- Asp.net Mvc 表单验证(气泡提示)
将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...
- centos中安装elasticsearch5.0
1.安装jdk 可以直接安装自带的openjdk,安装完成之后修改一下java的环境变量.另一种方式是就是安装oracle的jdk,从官网上下载http://www.oracle.com/techne ...
- 第八篇:cx_Oracle出现的问题
1.cx_Oracle.DatabaseError: ORA-24315: illegal attribute type 2.cx_Oracle.InterfaceError: Unable to a ...
- python自动化基础问题解析
(1)自动化代码中用到的设计模式: po模式(page object): 1.PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰. 2.页面对象与用例分离,使得我们更好的复 ...
- 浅谈倍增LCA
题目链接:https://www.luogu.org/problemnew/show/P3379 刚学了LCA,写篇blog加强理解. LCA(Least Common Ancestors),即最近公 ...
- Fortran学习笔记2(变量声明)
常数的申明方式 变量初始化 等价申明EQUIALENCE 类型转化 自定义类型 KIND用法 常数的申明方式 程序中所有处理的数据,有些事固定不变的常数,如圆周率π和重力加速度G等. 此时,程序员可以 ...