新人求助,WA#7
查看原帖
新人求助,WA#7
124628
Setoff楼主2021/7/16 20:47

rt. 求助各位大佬.

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
#define fore(i, u) for(reg int i=head[u]; i; i=e[i].nxt)
#define fora(i, a, b, c) for(reg LL i=a; i<=b; i+=c)
#define forb(i, a, b, c) for(reg int i=a; i>=b; i-=c)
#define uLL unsigned long long
#define INF 0x3f3f3f3f
#define LL long long
#define reg register
#define P 10000000
#define R read()
inline LL read(){
	LL s=0, f=1; char c=getchar();
	while(!isdigit(c)) { if(c=='-') f=-f; c=getchar(); }
	while(isdigit(c)) s=(s<<3)+(s<<1)+(c^48), c=getchar();
	return s*f;
}
LL n, b, p, ans, pri[P], c[P];
int main(){
	n=R, b=R, ans=1e18*4*1LL;
	for(reg LL i=2, k=0; i*i<=b; ++i, k=0){
		if(b%i) continue;
		while(!(b%i)) b/=i, ++k;
		pri[++p]=i, c[p]=k;
	}
	if(b>1) pri[++p]=b, c[p]=1;
	fora(i, 1, p, 1){
		LL t=0;
		for(reg LL j=pri[i]; j<=n; j*=pri[i])
			t+=n/j;
		ans=min(ans, t/c[i]);
	}
	return !printf("%lld", ans);
}
2021/7/16 20:47
加载中...