洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 -T1 一道中档题 Factorial
来源:互联网 发布:淘宝卖的鹿茸是真的吗 编辑:程序博客网 时间:2024/05/21 19:24
题目大意:求n!在k进制下末尾0的个数。
做法:我们对k进行质因数分解,然后用k的质因数去除 n!,然后取num2/num1的最小值就可以了。
看数据范围,对k的质因数分解是要用rho大整数分解来做的,然而数据好像比较弱,筛到1e7就可以过的QAQ。
对于rho的应用见我前边一篇博客 欧拉函数专项
#include<iostream>#include<cstring>#include<cstdio>#include<vector>#define LL long longusing namespace std;LL n,k,ans,cnt,m,MOD;bool np[10000009];LL prime[10000009],num[10000009],q[10000009],r;void su(){ np[1]=1,np[0]=1; for(int i=2;i<=10000001;i++) { if(!np[i]) prime[++cnt]=i; for(int j=1;j<=cnt&&1ll*(prime[j]*i)<=10000001;j++) { np[i*prime[j]]=1; if(i%prime[j]==0) break; } }}void pre(){ LL p=k; for(int i=1;i<=cnt;i++) { LL x=prime[i],f=0; while(p%x==0&&p) { p/=x; num[x]++; f=1; } if(f) q[++r]=prime[i]; if(!p) break; }}LL count(LL x){ LL s=0,p=x; while(p<=n) { s+=n/p; p*=x; } return s;}int main(){ scanf("%lld%lld",&n,&k); su(); pre(); ans=1e18; for(int i=1;i<=r;i++) { ans=min(ans,count(q[i])/num[q[i]]); } if(ans==1e18) ans=0; printf("%lld",ans); return 0;}
阅读全文
1 0
- 洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 -T1 一道中档题 Factorial
- 洛谷10月月赛R1·浴谷八连测R1·提高组 一道中档题 Factorial
- 洛谷10月月赛R1-T1-一道中档题 Factorial
- 洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1
- 洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1
- 洛谷10月月赛R1·浴谷八连测R1·提高组:SAC E#1
- 【洛谷10月月赛R1提高组】 SAC E#1
- 洛谷10月月赛R1·浴谷八连测R1·提高组 T1
- [洛谷10月月赛R1·普及组]T21 SAC E#1
- <洛谷10月月赛R1·浴谷八连测R1·提高组·T1 3927 > 快速求1~n中的某一因子个数之和
- 洛谷10月月赛R1·浴谷八连测R1·提高组 T2
- 洛谷10月月赛R1·浴谷八连测R1·提高组
- 洛谷10月月赛R1·浴谷八连测R1·提高组 T3
- 洛谷10月月赛R1-T2-一道简单题 Sequence2
- 【luogu10月月赛】一道中档题 Factorial(数论)
- 洛谷10月月赛R1T1-SAC E#1
- 洛谷5月月赛R1题解报告
- 洛谷10月月赛R2·浴谷八连测R3 T1
- 【自考】C++程序设计(三)特殊函数和成员
- 三星S6的Wifi连接上了,却无法上网
- SQL Plus简单的操作
- NEUQ oj 1068 题解
- 贪心算法
- 洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 -T1 一道中档题 Factorial
- PHP运行模式
- C语言运算符简单总结
- EUC-CN是什么编码
- Spectral Clustering(谱聚类)
- 左移运算符 优先级很低
- DeviceIoControl获取文件LCN
- 三个强盗问题
- TTL,232串口区别