poj1845(逆元+快速幂)
题目链接:https://vjudge.net/problem/POJ-1845
题意:求A的B次方的所有因子(包括1)的和对9901的模。
思路:首先对A利用唯一分解定理得A=p1x1*p2x2*...*pnxn,则A^B=p1B*x1*p2B*x2*...*pnB*xn。且其所有因子的和等于:
(1+p11+...+p1B*x1)*(1+p21+...+p2B*x2)*...*(1+pn1+...+pnB*xn)。
对其中的1+pi1+...+piB*xi,可以用等比数列的求和公式来计算,即(piB*xi+1-1)/(pi-1),需要计算除法对9901的模,所以需用逆元。注意到这里不建议使用费马小定 理或扩展欧基里德来求逆元,因为不能确保互斥,所以选择最方便的a/b % m=a%(b*m)/b,其中b|a。但要注意的是用快速幂时乘法可能超出LL的范围,所以用到 了快速乘法。
AC代码:
#include<cstdio>
#include<cstring>
using namespace std; typedef long long LL;
const LL Mod=;
int A,B;
LL ans=,M; LL qmul(LL a,LL b){
LL ret=;
while(b){
if(b&) ret=(ret+a)%M;
b>>=;
a=(a+a)%M;
}
return ret;
} LL qpow(LL a,LL b){
LL ret=;
while(b){
if(b&) ret=qmul(ret,a);
b>>=;
a=qmul(a,a);
}
return ret;
} int main(){
scanf("%d%d",&A,&B);
for(int i=;i*i<=A;++i){
if(A%i==){
int num=;
while(A%i==){
A/=i;
++num;
}
M=Mod*(i-);
ans=ans*(qpow(i,num*B+)-1LL+M)/(i-)%Mod;
}
}
if(A!=){
M=Mod*(A-);
ans=ans*(qpow(A,B+)-1LL+M)/(A-)%Mod;
}
printf("%lld\n",ans);
return ;
}
poj1845(逆元+快速幂)的更多相关文章
- 牛客网 牛客小白月赛1 I.あなたの蛙が帰っています-卡特兰数,组合数阶乘逆元快速幂
I.あなたの蛙が帰っています 链接:https://www.nowcoder.com/acm/contest/85/I来源:牛客网 这个题有点意思,是卡特兰数,自行百度就可以.卡特兰数用处 ...
- 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)
先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...
- 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂
原题:ZOJ 3774 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 --------------------- ...
- HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- Gym - 101775A Chat Group 组合数+逆元+快速幂
It is said that a dormitory with 6 persons has 7 chat groups ^_^. But the number can be even larger: ...
- 51 Nod 1013 3的幂的和 矩阵链乘法||逆元+快速幂
这道题我写了两种写法 一种利用逆元 a/b%mod=a*c%mod; (c是b的逆元)易得2的逆元就是5~~~04: 一种是矩阵快速幂 利用递推式得出结论 #include<cstdio> ...
- ACM学习历程—HDU5490 Simple Matrix (数学 && 逆元 && 快速幂) (2015合肥网赛07)
Problem Description As we know, sequence in the form of an=a1+(n−1)d is called arithmetic progressio ...
- 刷题总结——分糖(ssoj 容斥原理+逆元+快速幂+组合数求插板)
题目: 题目描述 有 N 个(相同的)糖果,M 个(不同的)小朋友.M 和 N 满足:1≤M≤N≤100000(105).要求:1.每个小朋友都至少有一个糖果.2.不存在正整数 X(X>=2), ...
- 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂
链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...
随机推荐
- JVM jmap dump 分析dump文件 / 如何使用Eclipse MemoryAnalyzer MAT 排查线上问题
jhat简介 jhat用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言 这个工具并不是想用于应用系统中而是用于"离线" ...
- opencv画出轮廓外接矩形
Mat cannyImage; /// Detect edges using canny Canny(src, cannyImage, , , ); vector<vector<Point ...
- leetcode989
class Solution: def addToArrayForm(self, A, K): i = len(A) - 1 while i >= 0 and K > 0: A[i] += ...
- Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板
JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+Boots ...
- ssm框架之配置日志系统打印到控制台与指定文件
前提: 0:ssm框架已经搭建并且成功运行 1.maven环境配置成功 2.tomcat配置成功,并且配置本机的tomcat环境变量 内容: 0.导入所需要的jar包 <!-- 配置log4j日 ...
- vue.js 组件引用之初级
1. 构造组件,及组件引用:1.1 构造一个组件,1.2 注册一个组件,1.3 实例化Vue()即引用Vue() <!DOCTYPE html> <html lang=" ...
- 装饰者模式——Head First
一.定义 装饰者模式(Decorator Pattern)动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 二.类图 三.星巴兹饮料 //Component public ...
- git release功能
命令行: git tag -a v3. -m "这是4.0版本" git push origin v3. //git tag -a 标签名称 -m "说明" / ...
- 对String值不可变的理解以及String类型的引用传递问题
今天复习java时,突然注意到了一句以前没有注意过的一句话,String 是final修饰的,其值是不可变的.当时看的一脸懵逼,String str = "abc"; str = ...
- 【转】【java】论integer是地址传递还是值传递
转自:http://www.tuicool.com/articles/AraaQbZ 论integer是地址传递还是值传递 Integer 作为传参的时候是地址传递 , 可以参考如下例子,在程序刚启动 ...