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, ...
随机推荐
- 监控msyql 连接数 及 各用户连接数
#!/bin/bash while true do date +%Y%m%d-%H:%M:%S mysql -uroot -p'xxx' -e "select count(1) from i ...
- $(document).ready和window.onload 简单分析区别
<锋利的JQuery>翻开没看几页,就遇到了这个神奇的问题,之前在橙旭园学习的时候,JQuery只教了一些基础的,像链式操作等,那时以为这个和window.onload()差不多一模一样, ...
- CoordinateLayout简介
CoordinateLayout简介 参考:CoordinatorLayout CoordinatorLayout is a super-powered FrameLayout. Coordinato ...
- k8s资料转载
K8S入门(二) kubeadmin单机部署 (kubernetes)k8s入门.yum单机版安装.kuberctl指令.k8s服务实例. kubernetes---CentOS7安装kubernet ...
- Set和Map数据
es6新的数据结构 1.Set:构造函数 const s = new Set ([1,2,3]); console.log(s)//Set(3){1,2,3};[...s];//[1,2,3]cons ...
- feedparser的安装
Python中常常要利用RSS下载文本.由于这个Python开源软件嘛,碎片化特别严重.反正是各种边边角角的小问题.网上找来找去找半天都没解决如何安装.我的是win7的.python 是3.4版本的. ...
- mac 管理员权限变成了普通权限处理方法
在更换账户名称的时候出了这个问题.设置的时候不会显示用户名,没有电脑的管理权限了,找到如下方法解决的,试了可行. http://blog.csdn.net/vickylizy/article/deta ...
- day30-模块和包
一.模块介绍 1.什么是模块 在python中,一个函数封装一个功能,当一个文件中包含很多个函数,而我们在其他程序中经常会用到这个文件中的功能时,那么我们就可以将这个包含多个函数的文件封装成一个模块, ...
- ueditor修改工具栏固定位置和显示空白div
ueditor.all.js
- javascript的DOM操作获取元素
一.document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> ...