CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数
题目链接:https://www.luogu.org/problem/CF1228C
问题可以转化为:求质数 $p$ 在 $1\sim n$ 中的每个数中的次幂之和.
因为 $p$ 是一个质数,只能由 $1$ 乘以 $p$ 表示出来,所以可以将问题转化为求 $p$ 在 $n!$ 中出现的次幂.
我们可以像提取公因式一样地去提取这个 $p$.
那么,先考虑 $p$ 的贡献:$1\sim n$ 中能被 $p$ 整除的乘积为 $p^{\frac{n}{p}}\times (\frac{n}{p}!)$
然后递归处理啊 $\frac{n}{p}!$ 中 $p$ 出现的次数.
由于 $p>2$,而 $n<10^8$,所以提取次数不会超过 $65$,复杂度是很优秀的.
#include <bits/stdc++.h>
#define mod 1000000007
#define ll unsigned long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
vector<ll>v;
ll qpow(ll base,ll k)
{
ll tmp=1ll;
for(;k;k>>=1,base=base*base%mod) if(k&1) tmp=tmp*base%mod;
return tmp;
}
int main()
{
int i,j;
ll x,n,p;
// setIO("input");
scanf("%lld%lld",&x,&n);
p=x;
for(i=2;i*i<=p;++i)
{
if(p%i==0)
{
v.push_back(i);
for(;p%i==0;) p/=i;
}
}
if(p>1) v.push_back(p);
ll ans=1ll;
for(i=0;i<v.size();++i)
{
ll m=n;
ll now=0;
while(m>=v[i])
{
now+=m/v[i];
m/=v[i];
}
ans=ans*qpow(v[i], now)%mod;
}
printf("%lld\n",(long long)ans);
return 0;
}
CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数的更多相关文章
- Codeforces Round #589 (Div. 2) C - Primes and Multiplication(数学, 质数)
链接: https://codeforces.com/contest/1228/problem/C 题意: Let's introduce some definitions that will be ...
- CF #589 (Div. 2) D. Complete Tripartite 构造
这个 D 还是十分友好的~ 你发现这 $3$ 个集合形成了一个环的关系,所以随意调换顺序是无所谓的. 然后随便让 $1$ 个点成为第 $2$ 集合,那么不与这个点连边的一定也属于第二集合. 然后再随便 ...
- Codeforces Round #324 (Div. 2) B. Kolya and Tanya 快速幂
B. Kolya and Tanya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pro ...
- Codeforces 450B div.2 Jzzhu and Sequences 矩阵快速幂or规律
Jzzhu has invented a kind of sequences, they meet the following property: You are given x and y, ple ...
- Codeforces Round #518 (Div. 1) Computer Game 倍增+矩阵快速幂
接近于死亡的选手没有水平更博客,所以现在每五个月更一篇. 这道题呢,首先如果已经有权限升级了,那么后面肯定全部选的是 \(p_ib_i\) 最高的. 设这个值为 \(M=\max \limits_i ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
随机推荐
- Python开发【第五章】:常用模块
一.模块介绍: 1.模块定义 用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质上就是.py结尾python文件 分类:内置模块.开源模块.自定义模块 2.导入模块 本质:导 ...
- 把axios挂载到vue实例上面/==Axios 各种请求方式传递参数格式
/*ajax请求*/ import axios from 'axios' axios.defaults.baseURL = 'https://api.douban.com/v2/movie' ...
- Codeforces 1245 E. Hyakugoku and Ladders
传送门 显然这个图是个 $DAG$ ,那么就可以考虑跑 $dp$ 了 先考虑没有梯子的情况,首先把每个位置标号,越后面的位置编号越小,终点位置编号为 $1$ 那么从终点往起点 $dp$ ,枚举当前位置 ...
- Manacher算法+注释
Manacher算法是用来求一个字符串中最长回文串的算法. 考虑暴力求最长回文串的做法: 暴力枚举字符串中的所有字串判断是否回文,然后求最大值. 时间复杂度O(n^3),考虑优化. 我们从枚举所有字串 ...
- 加密算法 MD5 和 SHA 的 JAVA 实现
首先先简单的介绍一下MD5 和 SHA 算法 然后看一下在 java.security.MessageDigest (信息摘要包下) 如何分别实现 md5 加密 和 sha 加密 最后在看一下 ...
- 关于hashcode 和 equals 的内容总结
第一:equals() 的作用是 表示其他对象是否“等于”这个对象. 在Object源码里面 equals的作用等价于 == 即 用来比较俩个对象的内存地址是否相同 public boole ...
- js中 this 的指向
js中 this的指向一共存在3种地方: 1.全局的this; 2.构造函数的this; 3.call/apply; 一.全局的this: function test(){ this.d = 3;// ...
- C#四种深拷贝方法(转载)
原文地址:https://www.cnblogs.com/profession/p/6222489.html //四种深拷贝方法 public static T DeepCopyByReflect&l ...
- pmtk3
summary A list of every PMTK3 demo auto-generated by publishDemos on 27-Mar-2012 Book Demos (1) Intr ...
- JS基础_this
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...