题目链接

首先介绍两个定理。

整数唯一分解定理:任意正整数都有且只有一种方式写出素数因子的乘积表达式。

\(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因子和(唯一分解定理,约数和公式)的更多相关文章

  1. POJ 1845-Sumdiv(快速幂取模+整数唯一分解定理+约数和公式+同余模公式)

    Sumdiv Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  2. 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, ...

  3. UVA294DIvisors(唯一分解定理+约数个数)

    题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...

  4. POJ1845Sumdiv(求所有因子和 + 唯一分解定理)

    Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 17387   Accepted: 4374 Descripti ...

  5. 2018.09.28 牛客网contest/197/A因子(唯一分解定理)

    传送门 比赛的时候由于变量名打错了调了很久啊. 这道题显然是唯一分解定理的应用. 我们令P=a1p1∗a2p2∗...∗akpkP=a_1^{p_1}*a_2^{p_2}*...*a_k^{p_k}P ...

  6. 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)

    洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式  ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...

  7. HDU-1215 七夕节 数论 唯一分解定理 求约数之和

    题目链接:https://cn.vjudge.net/problem/HDU-1215 题意 中文题,自己去看吧,懒得写:) 思路 \[ Ans=\prod \sum p_i^j \] 唯一分解定理 ...

  8. hdu 1215 求约数和 唯一分解定理的基本运用

    http://acm.hdu.edu.cn/showproblem.php?pid=1215 题意:求解小于n的所有因子和 利用数论的唯一分解定理. 若n = p1^e1 * p2^e2 * ……*p ...

  9. Divisors (求解组合数因子个数)【唯一分解定理】

    Divisors 题目链接(点击) Your task in this problem is to determine the number of divisors of Cnk. Just for ...

随机推荐

  1. iOS:让UIView覆盖导航栏

    当我们想做一个弹出式菜单时,想将导航栏也一起盖住不显示的话,可以用如下语句实现: UIView* myView = /* 你自定义的view */; UIWindow* currentWindow = ...

  2. LR中订单流程脚本2

    Action(){ //1.设置服务器的IP地址 //lr_save_string("192.168.1.12:8080", "ip"); lr_save_st ...

  3. MySQL出现GROUP BY clause错误解决办法

    #1)当mysql数据库出现如下错误:#which is not functionally dependent on columns in GROUP BY clause; this is incom ...

  4. java代码(生成long类型数字)

    package test; public class GenerateNum { public static void main(String[] args) { //定义为long类型,需在数值后面 ...

  5. Asp.net Mvc 表单验证(气泡提示)

    将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...

  6. centos中安装elasticsearch5.0

    1.安装jdk 可以直接安装自带的openjdk,安装完成之后修改一下java的环境变量.另一种方式是就是安装oracle的jdk,从官网上下载http://www.oracle.com/techne ...

  7. 第八篇:cx_Oracle出现的问题

    1.cx_Oracle.DatabaseError: ORA-24315: illegal attribute type 2.cx_Oracle.InterfaceError: Unable to a ...

  8. python自动化基础问题解析

      (1)自动化代码中用到的设计模式: po模式(page object): 1.PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰. 2.页面对象与用例分离,使得我们更好的复 ...

  9. 浅谈倍增LCA

    题目链接:https://www.luogu.org/problemnew/show/P3379 刚学了LCA,写篇blog加强理解. LCA(Least Common Ancestors),即最近公 ...

  10. Fortran学习笔记2(变量声明)

    常数的申明方式 变量初始化 等价申明EQUIALENCE 类型转化 自定义类型 KIND用法 常数的申明方式 程序中所有处理的数据,有些事固定不变的常数,如圆周率π和重力加速度G等. 此时,程序员可以 ...