题意:给你一个n,和p让你求n中含有x个p,打印x
思路:(秦皇岛真的打自闭了啊,后来听铁哥们说了I感觉能暴力,但想的不是很清楚)还是说正题啵,这个题有点意思骂我们先思考一个n的阶乘对于一个质数p的做法,我觉得纸片博客讲的还是挺清楚的,其实只用你自己稍微推一下就行了(传送门),然后这个题我们发现他并没有说是质数,那我们就手动质因数分解,然后就最小值就行了
代码:
#include <bits/stdc++.h> using namespace std; typedef long long LL; map<LL,LL>mp; LL solve(LL n,LL p) { LL ans=0; while(n) { n=n/p; ans+=n; } return ans; } int main() { LL n,p; scanf("%lld%lld",&n,&p); LL as=p; LL j=2; while(as!=1){ while(as%j==0){ as/=j; mp[j]++; } j++; } LL ans=0x3f3f3f3f3f3f3f3fLL; for(auto i:mp){ // printf("%d %d ",i.first,i.second); ans=min(ans,solve(n,i.first)/(i.second)); } printf("%lld ",ans); return 0; }